相关疑难解决方法(0)

为什么C++不允许使用匿名结构?

一些C++编译器允许匿名联合和结构作为标准C++的扩展.这有点语法糖,偶尔会非常有帮助.

阻止它成为标准一部分的理由是什么?是否存在技术障碍?一个哲学的?或者仅仅是不足以证明它的合理性?

这是我正在谈论的样本:

struct vector3 {
  union {
    struct {
      float x;
      float y;
      float z;
    };
    float v[3];
  };
};
Run Code Online (Sandbox Code Playgroud)

我的编译器会接受这个,但它警告"无名结构/联合"是C++的非标准扩展.

c++ struct unions

87
推荐指数
3
解决办法
5万
查看次数

/ Za编译器指令不在VS2010中编译系统头

我想禁用语言扩展,以便能够在我的项目中进行一些测试.我发现我必须从http://msdn.microsoft.com/en-us/library/0k0w269d.aspx设置/ Za编译器指令,但是在此之后如果我包含windows头文件我会有错误.有没有办法在VS2010中编写符合标准的代码(由编译器强制执行,而不是由其他程序员/代码审查强制执行),仍然使用系统头文件?

谢谢!

c++ visual-studio-2010

7
推荐指数
2
解决办法
1107
查看次数

如何取消定义_MSC_VER?

我在Visual Studio工作,但我的项目是基于POSIX的环境(marmalade sdk).在这个项目中,发布版本使用gcc编译为ARM,但调试版本在Windows上运行,由MS编译器编译.此环境也有自己的STL和其他标准库的实现.

许多这些c ++ librares都有这样的代码:

#if defined( _MSC_VER )
   #include <Windows.h>
#else
   #include <pthread.h>
#endif
Run Code Online (Sandbox Code Playgroud)

是否可以取消定义_MSC_VER宏? - 这样C++库就可以在这里检测到POSIX系统.

c++ visual-studio visual-c++ marmalade

3
推荐指数
1
解决办法
7423
查看次数