当前位置: C语言 -- 标准库 -- <stdint.h> -- UINTN_C

UINTN_C宏


概要:

#define UINTN_C(valuevalue


描述:

该宏是函数式宏,扩展为对应的uint_leastN_t类型整数常量表达式,例如:如果uint_least64_t是整数类型unsigned long long int的类型名,UINT64_C(0x123)可能会扩展为整数常量0x123ULL

该宏的实参应是无后缀的整数常量,其值不超过相应类型的表示范围;实参的值也是整个表达式的值。

具体实现中,该宏应替换为适合在#if预处理指令中使用的常量表达式,并且该表达式应具有与相应类型(整数提升后)相同的类型。


参数:
value

整数类型值。


返回值:

该宏返回参数value的值。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
/*宏UINTN_C范例*/

#include <stdint.h>
#include <stdio.h>

int main(void)
{
    printf("UINT8_C(125) = %u\n", UINT8_C(125));
    printf("UINT16_C(125) = %u\n", UINT16_C(125));
    printf("UINT32_C(125) = %u\n", UINT32_C(125));
    printf("UINT64_C(125) = %llu\n", UINT64_C(125));

    return 0;
}


输出:

UINT8_C(125) = 125

UINT16_C(125) = 125

UINT32_C(125) = 125

UINT64_C(125) = 125

GCC编译器<stdint.h>头文件中宏UINTN_C定义如下:

#define UINT8_C(val) val

#define UINT16_C(val) val

#define UINT32_C(val) val##U

#define UINT64_C(val) val##ULL

根据这个定义,上述4个宏分别扩展为常量表达式125125125U125ULL


相关内容:
INTN_C 表示扩展为int_leastN_t类型常量表达式的宏。