有没有办法知道我是否在特定的Microsoft Visual Studio版本下进行编译?
我一直在阅读关于C99和C++ 11以及所有这些非常甜蜜的东西,它们被添加到语言标准中,有一天可能会很好用.但是,我们目前正处于在Visual Studio中编写C++的过程中.
标准中的任何新东西是否会被添加到visual studio中,或者微软是否更有兴趣添加新的C#变体来做到这一点?
编辑:除了接受的答案,我找到了Visual C++团队博客:
具体来说,这篇文章在其中:
http://blogs.msdn.com/vcblog/archive/2008/02/22/tr1-slide-decks.aspx
很有用.谢谢!
我想知道Microsoft Visual Studio 2010是否支持C99.如果没有,我怎么能使用像intptr_t和的标准类型uintptr_t?
下面的代码片段不会在visual studio中打印出值.
int main() {
intptr_t P = 10;
printf("test value is %zd",P);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
test value is zd
Run Code Online (Sandbox Code Playgroud)
我希望上面的代码打印出来
test value is 10
Run Code Online (Sandbox Code Playgroud)
我使用intptr_t而不是整数,以使代码在32位和64位架构中进行调整.
在海湾合作委员会,我能够做到这一点:
(CachedPath){ino}
inode->data = (struct Data)DATA_INIT;
Run Code Online (Sandbox Code Playgroud)
哪里:
struct CachedPath
{
Ino ino;
};
typedef int8_t Depth;
struct Data
{
Offset size;
Blkno root;
Depth depth;
};
#define DATA_INIT {0, -1, 0}
Run Code Online (Sandbox Code Playgroud)
MSVC为这些类型的转换提供以下错误:
error C2143: syntax error : missing ';' before '{'
Run Code Online (Sandbox Code Playgroud)
我怎样才能在MSVC中这样做?进一步注意,代码已经从C99转换而来,我为此使用了指定的初始值设定项,然后进行类似的转换.关于C99与C++的MSVC/GCC实现之间如何关联这些各种特征的任何清晰都是值得赞赏的.
编译一些旧的VC++ 6.0源代码时遇到此错误.
error C2632: 'long' followed by 'long' is illegal
Run Code Online (Sandbox Code Playgroud)
有一部分代码声明了一个导致错误的long long int变量.有谁知道我怎么能修复这个在VC++ 6.0中编译它的错误?我已经四处搜索,我已经读过这个版本尚不支持这种数据类型.但是,这是一个旧代码,我确信这是在VC++ 6.0中编译的.
我正在尝试MSVC使用它们出现的相应版本查找功能列表,以便我可以执行以下操作:
#if defined(_MSC_VER) && _MSC_VER > X
#define MY_INLINE __forceinline
#else
#define MY_INLINE inline
#endif
Run Code Online (Sandbox Code Playgroud)
随着gcc例如,存在的一个列表最低版本的所有属性。有类似的东西MSVC吗?