Я получаю ошибку
«/ usr / include / c ++ / 5 / cstddef: 51: 11: ошибка: max :: max_align_t’ не объявлена
using :: max_align_t;
^»
Поэтому я должен обновить библиотеки, потому что я нахожу это решение:
«Обходной путь, пока библиотеки не будут обновлены, должен включать <cstddef>
или же <stddef.h>
перед любыми заголовками из этой библиотеки. «
Я написал некоторые команды на терминале Ubuntu, такие как:
bash $ sudo apt-get install apt-file
bash $ sudo apt-file update
bash $ apt-file search stddef.h
Тогда все еще ошибка существует.
Спасибо
в .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
Я скомпилировал некоторый код с помощью GNU C ++ 4.9 для CentOS, и проблема не была решена путем обеспечения верхней позиции #include (или с помощью более старого заголовка stddef.h).
Как ни странно, я искал во всех заголовочных файлах библиотек компилятора глобальное определение max_aling_t, объявленное в нарушении. с помощью декларация … и не нашел ни одного! Может ли это быть во внутреннем скомпилированном заголовке?
Поэтому я просто закомментировал «using :: max_align_t;» строка в стандартном заголовке (не горжусь этим на самом деле), и это решило проблему … и код работает …
если кто-нибудь может объяснить, что означает / влияние этого max_align_t?