【问题标题】:_DEBUG and LLVM 5.0 C++ : Preprocessor Expected value in expression_DEBUG 和 LLVM 5.0 C++:表达式中的预处理器预期值
【发布时间】:2013-10-07 22:34:08
【问题描述】:

我在使用 XCode、LLVM 和 _DEBUG 定义时遇到问题。或者更具体地说,它似乎是带有下划线的东西。

这是我第二次遇到这样的错误。这次我是针对 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)。但现在我对这个错误感到不安。是什么原因造成的,这意味着什么?

设置: 方言:C++11、libc++(试过不同的,比如 GNUC++11 最大 OSX 10.8 代码 5 LLVM 5.0

【问题讨论】:

    标签: c++ xcode compiler-errors c-preprocessor llvm


    【解决方案1】:

    以下划线开头的名称保留用于实现。相反,请使用不以下划线开头的名称,除非您专门尝试访问某些特定于实现的功能。

    在实现特定的宏上使用 defined():

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

    如果出于某种原因您期望它会起作用,那么您还没有解释它是什么。没有理由这应该起作用。你期待它做什么?

    【讨论】:

    • 我正在使用 PhysX - 这是使用 _DEBUG 宏的 PhysX 库。他们要求我在编译器中定义 _DEBUG 或 NDEBUG,但它仍然不起作用。奇怪的是他们正在使用它..
    • 哦!那你要#if !defined(PX_CHECKED) && defined(_DEBUG)
    猜你喜欢
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多