Проблема при компиляции с константами
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 22.07.15 13:13
Оценка: :))) :))
На 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 г.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.