как исправить ошибку: max :: max_align_t ’?

Я получаю ошибку

«/ 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

Тогда все еще ошибка существует.
Спасибо

0

Решение

в .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
4

Другие решения

Я скомпилировал некоторый код с помощью GNU C ++ 4.9 для CentOS, и проблема не была решена путем обеспечения верхней позиции #include (или с помощью более старого заголовка stddef.h).

Как ни странно, я искал во всех заголовочных файлах библиотек компилятора глобальное определение max_aling_t, объявленное в нарушении. с помощью декларация … и не нашел ни одного! Может ли это быть во внутреннем скомпилированном заголовке?

Поэтому я просто закомментировал «using :: max_align_t;» строка в стандартном заголовке (не горжусь этим на самом деле), и это решило проблему … и код работает …

если кто-нибудь может объяснить, что означает / влияние этого max_align_t?

0

По вопросам рекламы [email protected]