看完后隐藏功能和C++/STL的暗角上comp.lang.c++.moderated,我完全惊讶的是,下面的代码片断编译并在两个Visual Studio 2008和G ++ 4.4的工作.
这是代码:
#include <stdio.h>
int main()
{
int x = 10;
while (x --> 0) // x goes to 0
{
printf("%d ", x);
}
}
Run Code Online (Sandbox Code Playgroud)
我假设这是C,因为它也适用于GCC.标准中定义了哪里,它来自何处?
因此,在接受James Kanze和Loki Astari关于C联动的培训时,我对此感到疑惑:
extern "C" int foo1 (void (*)());
extern "C" { int foo2 (void (*)()); }
Run Code Online (Sandbox Code Playgroud)
在我上学之后,我认为必须foo1只使用带有C++链接foo2的函数指针,而只需要带有C链接的函数指针.我的理解是否正确?C++标准中是否有特定的参考资料来解释上述示例中的差异?
编辑:为了让每个人都能更方便地遵循这里的一个带有C++ 11草案标准相关部分的pastebin.