以下是我在Visual Studio 2010上运行的示例代码:
#include <iostream>
int main()
{
int **p(NULL);
}
我收到此错误:error C2059: syntax error : 'constant'
但如果我将int **p(NULL);
更改为int **p = NULL;
,则上述代码编译正常。
在GCC(版本:4.4.2)上查看此内容并且两者都正常。我在这里缺少什么?
答案 0 :(得分:3)
VC ++编译器似乎对指向指针的初始化感到困惑......
这适用于例如
int (**p)(NULL);
这些不是
int *i;
int **p(&i);
int **o(NULL);
这虽然有效
int (**p)(&i);
typedef int* intp;
intp *o(NULL);
等......只要有两个**,模式就会失败!我猜错了!来自MSVC团队的人可能能够确认
答案 1 :(得分:0)
这可能是编译器本身的一个错误,也可能是你已经做了一些事情并且问了别的东西。
MSVC10支持C ++ 11中的一些功能,例如:
int **p1 = nullptr;
int **p2{}; //initialized to nullptr!
您可以尝试其中任何一种。两者都很好。
答案 2 :(得分:0)
看起来像Visual Studio的缺陷,如果我使用c ++编译@ http://codepad.org/并运行以下代码
int main()
{
int **p(NULL);
return 0;
}
同样可以使用g ++编译器。
答案 3 :(得分:-6)
您收到语法错误:显然没有定义NULL。你应该包括cstdlib。