На Visual C++ 2012 разрабатывается решение. В состав решения находится проект MathLib, в котором находятся файлы Types.h и Defconst.h . В файле Types.h определены типы ( например, typedef long double LDouble ), а в файле Defconst.h определены константы, в частности, определена константа
#define C 299792.458
Также в этом решении есть проект Orbit, который использует эти два файла (Defconst.h и Orbit.h).
При компиляции в проекте Orbit выдаётся ряд ошибок, связанных с системным файлом winnt.h . В частности, выдаётся ошибка
error C2059: синтаксическая ошибка: константа
файл winnt.h
строка 15607
В файле winnt.h в этой строке написано (выделено мною жирным шрифтом):
typedef struct _MAGE_ARM_RUNTIME_FUNCTION_ENTRY {
DWORD BeginAddress;
union {
DWORD UnwindData:
struct {
// ...
DWORD C: 1;
// ...
} DUMMYSTRUCTNAME;
} DUMMYUNIONNAME;
} IMAGE_ARM_RUNTIME_FUNCTION_ENTRY, *PIMAGE_ARM_RUNTIME_FUNCTION_ENTRY:
То есть появляется конфликт имён--в файле winnt.h определено значение C со значением 1 как поле структуры DUMMYSTRUCTNAME, а в файле Defconst.h определена константа C со значением 2999792.458 .
Как разрешить эту проблему? Можно ли её решить без переименования константы C в файле Defconst.h -- например, что-то изменив в настройках Visual C++ ?
1613 г. = 2024 г.