如果我写这个程序:
#include <iostream> namespace foo { struct bar { int x; }; } int main (void) { struct foo::bar *a = new struct foo::bar; delete a; return 0; }
并编译:
g++ main.cxx -Wall -Wextra
它给我这个警告:
main.cxx: In function ‘int main()’: main.cxx:10:39: warning: declaration ‘struct foo::bar’ does not declare anything [enabled by default]
但是,如果我在new关键字后面取出了struct关键字:
#include <iostream> namespace foo { struct bar { int x; }; } int main (void) { struct foo::bar *a = new foo::bar; delete a; return 0; }
解决方法
在C中,struct关键字定义一个类型,新类型不再需要struct关键字.这是C和C之间的许多区别之一.