Раньше у меня возникали проблемы, когда я пытался перенести некоторый код C ++, написанный на Mac OS X, в систему Linux или пытался скомпилировать код, написанный для более старой версии gcc / g ++, с более новой версией:
Кажется, что некоторые (более старые?) Версии gcc / g ++ автоматически включают некоторые заголовочные файлы для вас.
Например, для кода, использующего printf
, должно потребоваться #include <stdio.h>
.И код, который использует memcpy
должен требовать #include <string.h>
.Но в зависимости от версии gcc, которую я использую, она иногда включает их для меня.
Это приводит к хаосу, когда я забываю что-то включить, и тогда никогда не получит ошибок , пока я не перейду кскомпилировать код в другой системе.В этот момент это игра про весь проект и исправление включений.
Кто-нибудь еще сталкивался с этим?Есть ли способ заставить gcc автоматически включать или не включать?Или есть способ узнать что это автоинклюзия?