是否有很长的定义?

The*_* do 5 c++

在哪里检查是否定义了long long类型?我想做这样的事情:

#ifdef LONGLONG
#define long_long long long
#else 
#define long_long long
#endif
Run Code Online (Sandbox Code Playgroud)

Jam*_*lis 7

LLONG_MAX给出a可表示的最大值long long; 如果您的实现不支持long long,则不应定义LLONG_MAX.

#include <limits.h>

#ifdef LLONG_MAX
#define long_long long long
#else
#define long_long long
#endif
Run Code Online (Sandbox Code Playgroud)

这不是一个完美的解决方案. long long在C++ 03中不是标准的,并且long long已经超过C99,因此编译器可以(并且可能)支持long long但不能定义LLONG_MAX.

如果您想要一个具有特定大小的整数类型,您应该使用,<stdint.h>如果您的实现支持它.如果您的实现不支持它,Boost就会实现它.

  • @Knowing:然后使用`<cstdint>`中声明的`std :: intmax_t`.这将是可用的最大签名整数类型. (2认同)