Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我的错误,还是英特尔编译器中的错误?非静态成员错误的大小_C++_C++11_Sizeof - Fatal编程技术网

C++ 我的错误,还是英特尔编译器中的错误?非静态成员错误的大小

C++ 我的错误,还是英特尔编译器中的错误?非静态成员错误的大小,c++,c++11,sizeof,C++,C++11,Sizeof,我相信这一准则: #include <stdio.h> struct foo { char array[1024]; }; int main() { fprintf(stderr, "sizeof(foo::array): %zd\n", sizeof(foo::array)); } 是我的错还是ICC做了错误的事情:C++规范?< /p> < p>它是编译器错误,或者编译器在这个标准被采用之前发出。 根据C++标准(5.1个主要表达式)< /P> 1

我相信这一准则:

#include <stdio.h>

struct foo {
    char array[1024];
};

int main() { 
    fprintf(stderr, "sizeof(foo::array): %zd\n", sizeof(foo::array));    
}

是我的错还是ICC做了错误的事情:C++规范?< /p> < p>它是编译器错误,或者编译器在这个标准被采用之前发出。

根据C++标准(5.1个主要表达式)< /P> 13表示非静态数据成员或 类的非静态成员函数只能用于:

-如果该id表达式表示非静态数据成员,则 出现在未计算的操作数中


这是C++11的一部分。clang++也认为这是一个错误:
:8:62:错误:非静态数据成员'array'fprintf的使用无效(stderr,“sizeof(foo::array):%zd\n”,sizeof(foo::array));~~~~~^~~~GCC现在默认为C++11,也许这就是问题所在?您可能需要告诉其他编译器使用C++11,可能是使用
-std=C++11
。@PaulR:clang也可以使用C++11。@Tavian,我使用的是gcc 4.4.7,所以还不支持C++11。这听起来像是gcc将该功能后移植到C++98中,直到14年才添加到icc中。0@gct听起来不错。C+=标准允许使用这种构造。所有其他问题都是你个人的问题。@gct也会阅读关于N2253的评论
error #288: a nonstatic member reference must be relative to a specific object
[ Example:
struct S {
int m;
};
int i = sizeof(S::m); // OK
int j = sizeof(S::m + 42); // OK
—end example ]