MSVC 比较简单,在 64 bit 系统中定义了 _WIN64,只要没有定义 _WIN64,就是 32 bit 系统. 对于 64 位的 x86 机器,定义了 _M_AMD64 (或者中立的名字 _M_X64). 对于 32 位的 x86 机器,定义了 _M_IX86 . MSVC 11 的测试版本我没有安装,因此不知道 MIPS 的预定义宏,你可以自己装装看看. 注意判断...
int n); int main(void) { int arr[10]; int i,n=
C++ 编译器预定义了某些全局标识符,称为manifest constants。大多数全局标识符以两个下划线 (__) 开头和结尾。 检查Windows 操作系统的示例: #ifdef _WIN32printf("You have Windows Operating System");#endif 以下是基于操作系统定义的宏列表: 操作系统宏定义说明 Windows 32 bit + 64 bit_WIN32for all Windo...
_stat、_stat32、_stat64、_stati64、_stat32i64、_stat64i32、_wstat、_wstat32、_wstat64、_wstati64、_wstat32i64、_wstat64i32 _STATIC_ASSERT 宏 _status87, _statusfp, _statusfp2 strcat、wcscat、_mbscat strcat_s、wcscat_s、_mbscat_s、_mbscat_s_l ...
实际上,各个格式化标志符的定义在头文件inttypes.h中。可以看到,实际可直接使用格式化标志符%I64d来输出 uint64_t类型。 这也从解释了为什么需要将 PRIu64 独立书写,这是由于使用格式化字符串" %PRIu64 "时,编译器会将 " " 间的所有字符均视为字符串的一部分,这样在预处理阶段便无法对 PRIu64 的宏定义进行替...
类型定义和支持32位/64位系统的宏。 自定义打印函数。 生成随机数的函数。 线程助手。 用于声明、交换变量以及MIN/MAX/ABS等宏。 位计数,溢出检查等功能。 基于堆栈的安全临时分配的宏。 GMP函数库,以解决不同系统上的兼容性问题。 用于分析和测试代码的助手。
二、#define定义常量和宏 #define是一个预处理指令 #define定义标识符常量 例如: #define MAX 1000 #define STR “abcdef” 此处的MAX #define定义宏 宏是有参数的,我们可以通过定义宏来实现自己想要的功能。 注意:宏的名字一般是大写字母组成。 例如: ...
SIZE_SZ 这个宏指的是指针的大小,在 32 位系统下,SIZE_SZ 等于 4 。在 64 位系统下,它等于 8。因为现在都是 64 位系统,所以本文中后面的例子中我们都是以 SIZE_SZ 为 8 来举例。所以在 64 位系统下,MAX_FAST_SIZE = 80 * 8 / 4 = 160 字节。
常量宏 使用宏 INT8_C(c)、INT64_C(c)、UINT8_C(c)、UINT64_C(c) 等指定给定常量的大小和符号。基本上,必要时这些宏会在常量的末尾添上 l、ul、ll 或ull。例如,对于 ILP32,INT64_C(1) 会在常量 1 后面附加 ll;对于 LP64,则附加 l。可...
1. const常量与宏定义常量标识符 (1) 编译器处理方式时间不同 define宏是在预处理阶段展开; const常量是编译运行阶段使用; (2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开; const常量有具体的类型,在编译阶段会执行类型检查; (3) 存储方式