Подтвердить что ты не робот

Ошибка: "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"?

Спасибо и дайте мне знать, если что-то неясно!

4b9b3361

Ответ 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>

работал на меня