Почему функция 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

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