_DEBUG и LLVM 5.0 C ++: ожидаемое значение препроцессора в выражении

0

У меня возникли проблемы с XCode, LLVM и определением _DEBUG. Или, точнее, это нечто вроде подчеркивания.

Это второй раз, когда я получаю такую ошибку. На этот раз Im компиляция против PhysX lib.

/Library/Frameworks/PhysX.framework/Versions/3.2.1/include/foundation/PxPreprocessor.h:316:35: Ожидаемое значение в выражении

Линия, на которую он жалуется:

#if !defined(PX_CHECKED) && _DEBUG

И это указывает сразу после _DEBUG. Если я удалю символ подчеркивания, он компилируется отлично (я также сделал это в аналогичной библиотеке в последний раз, см. Http://www.ogre3d.org/forums/viewtopic.php?f=2&t=78990). Но теперь я чувствую себя неловко из-за этой ошибки. Что вызывает это и что это значит?

Настройки: Диалект: С++ 11, libc++ (Пробовали разные, например GNUС++ 11 Max OSX 10.8 XCode 5 LLVM 5.0

Теги:
xcode
compiler-errors
c-preprocessor
llvm

1 ответ

4
Лучший ответ

Имена, начинающиеся с символа подчеркивания, зарезервированы для реализации. Вместо этого используйте имена, которые не начинаются с подчеркивания, если вы специально не пытаетесь получить доступ к определенной функции, специфичной для реализации.

Используйте определенные() для макросов, специфичных для реализации:

#if !defined(PX_CHECKED) && defined(_DEBUG)

Если есть какая-то причина, по которой вы ожидаете, что это сработает, вы не объяснили, что это такое. Нет причин, по которым это должно сработать. Что вы ожидаете от этого?

  • 0
    Я использую PhysX - это библиотека PhysX, которая использует макрос _DEBUG. Они требуют, чтобы я определил _DEBUG или NDEBUG в компиляторе, но он все равно не будет работать. Странно, что они используют это ..
  • 0
    Ой! Затем вы хотите, чтобы #if !defined(PX_CHECKED) && defined(_DEBUG)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню