#include <iostream>
struct Empty {};
struct Foo {
int f2;
float f1;
char c;
};
int main()
{
std::cout << "alignment of empty class: " << alignof(Empty) << '\n'
<< "alignment of pointer : " << alignof(int*) << '\n'
<< "alignment of char : " << alignof(char) << '\n'
<< "alignment of Foo : " << alignof(Foo) << '\n' ;
}但是当我用icc (icpc -std=c++11 alignof.cpp)编译它时,我得到了以下错误,我不知道为什么:
cenas.cpp(13): error: type name is not allowed
std::cout << "alignment of empty class: " << alignof(Empty) << '\n'
^
cenas.cpp(13): error: identifier "alignof" is undefined
std::cout << "alignment of empty class: " << alignof(Empty) << '\n'
^
cenas.cpp(14): error: type name is not allowed
<< "alignment of pointer : " << alignof(int*) << '\n'
^
cenas.cpp(14): error: expected an expression
<< "alignment of pointer : " << alignof(int*) << '\n'
^
cenas.cpp(15): error: type name is not allowed
<< "alignment of char : " << alignof(char) << '\n'
^
cenas.cpp(16): error: type name is not allowed
<< "alignment of Foo : " << alignof(Foo) << '\n' ;我在同一台机器上运行代码,并使用module命令更改编译器。alignof运算符怎么可能是未定义的?
发布于 2013-07-15 23:22:36
不同的编译器对2011年引入的新语言功能有不同的支持。
根据this table的说法,英特尔的编译器还不支持alignof。
https://stackoverflow.com/questions/17657747
复制相似问题