При компиляции этого фрагмента
Код: Выделить всё
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://godbolt.org/z/rMaWoczn3
Подробнее здесь:
https://stackoverflow.com/questions/798 ... dule-std-c