Ошибка: "INT32_MAX" не был объявлен в этой области
Я получаю сообщение об ошибке
error: 'INT32_MAX' was not declared in this scope
Но я уже включил
#include <stdint.h>
Я компилирую это на (g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-44) с помощью команды
g++ -m64 -O3 blah.cpp
Нужно ли мне что-то делать, чтобы скомпилировать это? или существует другой способ С++ для получения константы "INT32_MAX
"?
Спасибо и дайте мне знать, если что-то неясно!
Ответы
Ответ 1
#include <cstdint> //or <stdint.h>
#include <limits>
std::numeric_limits<std::int32_t>::max();
Обратите внимание, что <cstdint>
является заголовком С++ 11, а <stdint.h>
является заголовком C, включенным для совместимости со стандартной библиотекой C.
Следующий код работает, так как С++ 11.
#include <iostream>
#include <limits>
#include <cstdint>
struct X
{
static const std::int32_t i = std::numeric_limits<std::int32_t>::max();
};
int main()
{
switch(std::numeric_limits<std::int32_t>::max()) {
case std::numeric_limits<std::int32_t>::max():
std::cout << "this code works thanks to constexpr\n";
break;
}
return EXIT_SUCCESS;
}
http://coliru.stacked-crooked.com/a/4a33984ede3f2f7e
Ответ 2
Цитируется со страницы руководства: "Реализации C++ должны определять эти макросы только в том случае, если __STDC_LIMIT_MACROS
определен до __STDC_LIMIT_MACROS
<stdint.h>
".
Так что постарайтесь:
#define __STDC_LIMIT_MACROS
#include <stdint.h>
Ответ 3
Hm... Все, что мне нужно было сделать, было #include <climits>
, ничто другое на этой странице не работало для меня.
Конечно, я пытался использовать INT_MIN
.
Ответ 4
Включение следующего кода после #include <iostream>
для меня:
#include <limits.h>
Я использую следующий компилятор:
g++ 5.4.0-6
Ответ 5
Я также столкнулся с подобной проблемой, просто нужно add- #include <limits.h>
после #include <iostream>
Ответ 6
#include <iostream>
#include <limits.h> or <climits>
работал на меня