Почему функция printf глобального пространства имен обнаруживается без импорта модуля std.compat?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему функция printf глобального пространства имен обнаруживается без импорта модуля std.compat?

Сообщение Anonymous »

При компиляции этого фрагмента

Код: Выделить всё

import std;

int main() {
printf("%s", "hello");
return 0;
}
с использованием компилятора MS VS C++ 19.50 с /std:c++23preview Я получил ожидаемое сообщение об ошибке «printf: идентификатор не найден», потому что в отличие от import std.compat, import std; не предоставляет функции глобального пространства имен C, такие как printf, fopen и т. д., тогда как этот фрагмент

Код: Выделить всё

import std;

int main() {
std::printf("%s", "hello");
printf("%s", "hello");
return 0;
}
скомпилировано без ошибок. Может ли кто-нибудь объяснить, почему это компилируется без необходимости импортировать std.compat?

Подробнее здесь: https://stackoverflow.com/questions/798 ... dule-std-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»