Pie*_*tro 6 c++ standards visual-c++
我正在尝试在Microsoft Visual C++ 2013中构建一个禁用所有非标准扩展的项目.
#ifdef _MSC_VER
#include <windows.h>
#endif
Run Code Online (Sandbox Code Playgroud)
在配置属性 - > C/C++ - >语言中,我将"禁用语言扩展"设置为是(/ Za).
但是,构建以前的代码我得到的错误如下:
C:\ Program Files(x86)\ Windows Kits\8.1\Include\um\winnt.h(11527):错误C2467:匿名'struct'的非法声明
这意味着仍然定义了_MSC_VER宏,并且已经包含了"windows.h".
当且仅当我使用Visual C++时,如何包含文件?
如何设置Visual C++以便将代码编译为标准C++,将所有Microsoft扩展标记为错误?
当且仅当我使用 Visual C++ 时如何包含文件?
正如您已经演示的那样,通过检查_MSC_VER
.
如何设置 Visual C++,使其将代码编译为标准 C++,并将所有 Microsoft 扩展标记为错误?
你不能。我不知道有哪个编译器允许这样做。标准完全允许诸如编译器版本的预定义宏之类的内容,因此它们不会作为“非标准扩展”而被禁用。
如果您想检查您的程序是否针对其他平台构建,请在其他平台上构建您的程序。GCC 和 Clang 会告诉你他们所接受的内容远比 Visual C++ 更好:)
归档时间: |
|
查看次数: |
2362 次 |
最近记录: |