Остановить перехват определений , вызванных C++, включает в себяC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Остановить перехват определений , вызванных C++, включает в себя

Сообщение Anonymous »

В комментарии к другому ответу мне показали пример кода, который, по-видимому, использовал printf и помещал без включения , но онлайн-компилятор не жаловался. [1] Чтобы понять, что происходит, я скопировал это в свою локальную среду IDE.
Сведенное к соответствующим включениям и выводам, это в основном следующее:

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

#include 
#include 
#include 

int main() {
printf("Answer %d\n", 42);
puts("Question?");
}
Экспериментируя с gcc 8.1.0 (в комплекте с Clode::Blocks 20.03), я обнаружил, что включения можно дополнительно сократить до Также образец теста — C++14 (gcc 8.3) — на ideone. com компилируется и работает нормально:

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

#include 

int main() {
printf("printf without #include \n");
return 0;
}
Это также верно и для других определений из , таких как FILE.
Я не нашел никакой информации на cppreference.com
  • std::printf, std::fprintf, std::sprintf, std::snprintf - cppreference.com
  • std::puts — cppreference.com
  • printf, fprintf, sprintf, snprintf, printf_s, fprintf_s, sprintf_s, snprintf_s — cppreference.com
  • puts - cppreference.com
Я также попробовал несколько поисков в Интернете и SO, но пока безуспешно.Хотя для небольших примеров может быть удобно получить некоторые мощные функции бесплатно, но серьезный проект может от этого пострадать: помимо сравнительной простоты исправления ошибок компилятора, я вижу в этом опасность серьезных ошибок во время выполнения.
Как я могу эффективно контролировать/предотвращать подобные включения?

[1] код, на который ссылаются, теперь содержит оператор включения, но я почти уверен, что его не было на этапе, когда я скопировал его... или, может быть, я скопировал только его часть ? ... в любом случае наблюдаемое поведение соответствует описанному выше.

Подробнее здесь: https://stackoverflow.com/questions/660 ... c-includes
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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