GNU C编译器的limits.h头中的以下定义,
#define LONG_MAX 2147483647L
使用的L后缀表示应将数字2147483647视为长整数文字。但该语句实际上是长整数的定义,所以不使用L作为后缀使定义循环,因此不合逻辑?。
我相信LONG_MAX通过指定long int的最大范围来定义long int。简而言之,long int指的是LONG_MAX,LONG_MAX中的L指的是long int。
答案 0 :(得分:5)
这不是类型的定义,这是一个文字常量。
答案 1 :(得分:4)
#define
进行基本文本替换,因此字符串2147483647L
只需在LONG_MAX
或其他任何编译工作之前替换字符串long
。 / p>
答案 2 :(得分:3)
您引用的行未定义long int
是什么。它将LONG_MAX
宏的值定义为值为2147483647的常量,并指定它为long int
类型。
在预处理器执行文本替换之后,这将替换LONG_MAX
的任何实例。
答案 3 :(得分:3)
编译器知道long int
是什么,因为它是内置在编译器中的,而不是因为limits.h
中的内容。
limits.h
使用编译器向程序提供信息,而不是编译器。