我一直在阅读关于C99和C++ 11以及所有这些非常甜蜜的东西,它们被添加到语言标准中,有一天可能会很好用.但是,我们目前正处于在Visual Studio中编写C++的过程中.
标准中的任何新东西是否会被添加到visual studio中,或者微软是否更有兴趣添加新的C#变体来做到这一点?
编辑:除了接受的答案,我找到了Visual C++团队博客:
具体来说,这篇文章在其中:
http://blogs.msdn.com/vcblog/archive/2008/02/22/tr1-slide-decks.aspx
很有用.谢谢!
这是众所周知,微软的Visual Studio编译器不支持C99,它看起来像他们有没有计划,以支持它.
但是,编译器确实包含一些樱桃挑选的功能,如可变参数宏和long long- 请参阅此答案中的引号:
在我们收到许多关于某些C99功能的请求的地方,我们已经尝试实现它们(或类似物).一对夫妇的例子是复杂的宏,
long long,__pragma,__FUNCTION__,和__restrict.如果您在工作中发现其他C99功能,请告诉我们!我们没有从C用户那里听到太多,所以大声说出来并让自己听到- Arjun Bijanki,微软在ISO C标准委员会的代表 http://blogs.msdn.com/b/vcblog/archive/2007/11/05/iso-c-standard-update.aspx
此外,较新版本的Visual Studio似乎附带了C99所需的一些标头.
关于特定功能有很多问题 - 但我不知道的是:在哪里可以找到当前MSVC编译器支持/提供的C99功能列表?
我目前正在使用显式强制转换unsigned long long并使用%llu它来打印它,但既然size_t有说明%z符,为什么没有clock_t?
甚至没有宏观.也许我可以假设在x64系统(操作系统和CPU)size_t上长度为8个字节(即使在这种情况下,他们已提供%z),但是呢clock_t?
我习惯了旧式C和最近才开始探索c99功能.我只有一个问题:如果我在我的程序中使用c99,c99标志gcc并将其与之前的c99库链接,我的程序是否会成功编译?
那么,我应该坚持旧的C89还是进化?
在VC6中编译时,我收到错误:
(致命错误C1083:无法打开包含文件:'stdint.h':没有这样的文件或目录)
任何人都可以解释为什么我收到此错误?
我正在尝试在Visual Studio 2010中编译OpenHMD.我开始使用Win32库项目布局.我注意到stdafx.cpp已创建并删除了该文件以及生成的标头.现在我仍然得到像这样的编译错误(内联注释):
OHMD_APIENTRY int ohmd_ctx_probe(ohmd_context* ctx)
{
memset(&ctx->list, 0, sizeof(ohmd_device_list));
int i; // <-- error C2143: syntax error : missing ';' before 'type'
for(i = 0; i < ctx->num_drivers; i++){ // <-- error C2065: 'i' : undeclared identifier
ctx->drivers[i]->get_device_list(ctx->drivers[i], &ctx->list);
}
return ctx->list.num_devices;
}
Run Code Online (Sandbox Code Playgroud)
我在哪里可以强制进行纯C编译或设置C语言级别C99?这似乎是C89问题?
注意:我已经改变了for循环
for(int i = 0; ...
Run Code Online (Sandbox Code Playgroud)
至
int i;
for( i = 0; ...
Run Code Online (Sandbox Code Playgroud)