Код, с которым я работаю для своей карьеры, написан на C ++ и построен с использованием DevEnv wrap (1.61) для Visual Studio 15.
Большая часть работы заключается в настройке структур с помощью ряда операторов #include
которые в итоге оказываются очень вложенными, например:
//ObjRTC.h
struct OBJ_RTC
{
OBJ_SETTINGS settings;
OBJ_ESTOPS emergencyStops[maxEstops];
OBJ_MACHINES machines[maxMachines];
OBJ_FOO bar[maxFooBars];
};
.
//ObjMachines.h
struct OBJ_MACHINES
{
bool inUse;
INPUTS inputDevices[maxInputDevices];
OUTPUTS outputDevices[maxOutputDevices];
};
Эти структуры дополнительно определены в других файлах, и мы начинаем объявлять значения в файлах 'def'.
// DefRTC.h
OBJ_RTC RealTimeController = {
#include "DefSettings.h"
#include "DefEstops.h"
#include "DefMachines.h"
#include "DefFoo.h"
};
.
// DefMachines.h
{
{
true,
{ /* list of inputs */ },
{ /* list of outputs */ },
},
{
true,
{ /* list of inputs */ },
{ /* list of outputs */ },
},
{
true,
{ /* list of inputs */ },
{ /* list of outputs */ },
},
},
Если в файлах объявлений присутствует синтаксическая проблема, во время компиляции о ней часто сообщают только о том, что она поступает из последней строки DefRTC.h
.
Я знаю, что мог бы начать копирование файлов и вставку над строками #include
, что я сделал при попытке решить проблему (значение типа INPUT
настроено вместо OUTPUT
)
Есть ли способ получить отчет компилятора, откуда произошла синтаксическая ошибка в отношении файла #included
?