如何验证编译时在 msvc 2010 c++ 项目中是不是正确设置了编译器选项?

Posted

技术标签:

【中文标题】如何验证编译时在 msvc 2010 c++ 项目中是不是正确设置了编译器选项?【英文标题】:How do I verify that compiler options have been set correctly in msvc 2010 c++ project at compile time?如何验证编译时在 msvc 2010 c++ 项目中是否正确设置了编译器选项? 【发布时间】:2013-08-18 14:49:54 【问题描述】:

我一直在玩 PDCurses 并且遇到了一些问题。最终我登陆了here,它解决了我的问题。

基本上,我的 PDCurses 项目是使用 UNICODE CHARACTER 集编译的。结果,块字符显示为大写 U。将库设置为 NOT SET 作为字符集解决了这个问题。

是否有一种技术可以让我在 PDCurses 的源代码中嵌入一些东西,以检测选择了哪个字符集选项并在设置不正确时执行编译时断言?

我查看了编译指示列表。一致性选项和运行时检查似乎做了类似的事情。

【问题讨论】:

AFAIK,没有编译器选项“字符集”。在 Visual Studio 中选择此开关会生成 _UNICODE 宏,可以在程序文本中进行测试。 测试 _MBCS(多字节)和 _UNICODE 宏。如果它们都没有定义,则不选择字符集。 【参考方案1】:

它似乎工作。谢谢

#ifdef _UNICODE
    #error "Unicode may not be set for this library"
#else
    #ifdef _MBCS
        #error "Multi Byte may not be set for this libary"
    #endif
#endif

【讨论】:

以上是关于如何验证编译时在 msvc 2010 c++ 项目中是不是正确设置了编译器选项?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MSVC 在 C++ 中定义外部 C 结构返回函数?

MSVC10 Visual Studio 2010 是不是支持 C++ 显式转换运算符

如何使用 system() 函数 (MSVC) 编译 c++ 代码?

Qt Creator 2.6.1 + Qt 5 + C++11 + MSVC2010 编译器

如何在 MSVC 中使用使用 MingW 编译的库?

如何禁用 msvc c++ 编译器的“注意:”提示