我收到错误
" / usr / include / c ++ / 5 / cstddef:51:11:错误:':: max_align_t'尚未声明 using :: max_align_t; ^"
所以我应该更新库,因为我找到了这个解决方案:
&#34;在库更新之前的解决方法是在该库的任何标题之前加入<cstddef>
或<stddef.h>
。&#34;
我在Ubuntu终端上写了一些命令,如:
bash $ sudo apt-get install apt-file
bash $ sudo apt-file update
bash $ apt-file search stddef.h
然后仍然存在错误。 谢谢
答案 0 :(得分:4)
在发生此编译错误的.cpp
文件中,您需要添加
#include <cstddef>
在任何其他标题之前,例如
main.cpp(已损坏)
#include <cstdio>
int main()
{
using ::max_align_t;
puts("Hello World");
return 0;
}
尝试编译:
$ g++ -std=c++11 -o test main.cpp
main.cpp: In function ‘int main()’:
main.cpp:5:10: error: ‘::max_align_t’ has not been declared
using ::max_align_t;
^
然后解决它:
main.cpp(已修复)
#include <cstddef>
#include <cstdio>
int main()
{
using ::max_align_t;
puts("Hello World");
return 0;
}
编译并运行它:
$ g++ -std=c++11 -o test main.cpp
$ ./test
Hello World
答案 1 :(得分:0)
我在CentOS上使用GNU C ++ 4.9编译了一些代码,但无法通过确保最高位置#include(或使用较旧的标头名称stddef.h)来解决该问题。
很奇怪,我在编译器库的所有头文件中搜索了max_aling_t的全局定义,该全局定义在令人讨厌的 using 声明中声明……却没有发现!可能在某些“内部编译标头中”吗?
所以我简单地注释掉了“使用:: max_align_t;”。标准标头中的一行(确实不为此感到骄傲),它解决了问题...并且代码正在运行...
如果有人可以解释此max_align_t的含义/影响?
答案 2 :(得分:-1)
我还注释了using ::max_align_t;
中的/usr/include/c++/4.9/cstddef
行,而代码正在运行,但是我不知道这样做是否会产生任何后果...