Ключевые слова аннотации в Visual Studio 2010 вызывают конфликты имен - PullRequest
1 голос
/ 29 февраля 2012

После преобразования проекта из Visual Studio 2005 в Visual Studio 2010 создается впечатление, что проект больше не собирается и выдает тонны C2059 ошибок, таких как:

`error C2059: синтаксическая ошибка:'type'

Мы используем Visual Studio 2010 Professional, который не обеспечивает статический анализ кода.

Вот полный журнал для компиляции файла 1 C для справки:

1>------ Build started: Project: VoHR, Configuration: Debug Win32 ------
1>  AKAsynch.c
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(88): error C2059: syntax error : 'type'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(107): error C2059: syntax error : '}'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(119): error C2059: syntax error : 'type'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(139): error C2059: syntax error : '}'

1 Ответ

2 голосов
/ 29 февраля 2012

Я разыскал причину этих внезапных ошибок компилятора.

По великой традиции windows.h кажется, что Microsoft ввела токены, которые вызывают конфликты имен с нашей базой кода.

В нашемточный случай, у нас было: #define Null (void*)0

Где-то в нашем коде нам нужно использовать макрос offsetof и чтобы сделать его доступным, мы #include <stddef.h>

Я отследил stddef.hпо очереди включает в себя crtdefs.h, который в конечном итоге включает sal.h, где наш макрос Null, кажется, конфликтует с аннотацией исходного кода в заголовках MS ...

В качестве обходного пути мы сделали:

#if defined(_MSC_VER) && _MSC_VER >= 1600
#pragma push_macro("Null")
#undef Null
#endif
#include <stddef.h>
#if defined(_MSC_VER) && _MSC_VER >= 1600
#pragma pop_macro("Null")
#endif

Наше использование Null как макрос спорно, все-таки я ожидал бы MS, чтобы найти способ, чтобы избежать столкновений с существующими базами кода.

1024 * Надеюсь, что помогает тем, кто сталкивается с той же проблемой.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...