2014-01-24 19 views
-1

在GNU C編譯器的limits.h中首標是如下定義的圓形定義,使用LONG_MAX的limits.h中

#define LONG_MAX 2147483647L 

將L後綴指示號碼2147483647應作爲一個長整數文字進行處理。但該聲明實際上是長整數的定義,所以不使用L作爲後綴使得定義循環,因此不合邏輯?

我相信LONG_MAX通過指定long int的最大範圍在long int的定義中起作用。簡而言之,long int指的是LONG_MAX,LONG_MAX中的L指long int。

+1

如何從名稱'LONG_MAX'中獲得long int的定義? – 2014-01-24 14:03:50

回答

3

編譯器知道long int是什麼,因爲它是內置在編譯器中的,而不是因爲limits.h中的內容。

limits.h向使用編譯器的程序提供信息,而不是向編譯器提供信息。

4

#define使用預處理器爲基本的文本替換因此字符串2147483647L之前long或任何其他的任何編譯工作剛剛替換字符串LONG_MAX

5

這不是一個類型的定義,這是一個字面常量。

3

您引用的行不定義long int是什麼。它將LONG_MAX宏的值定義爲常量,值爲2147483647,並指定它的類型爲long int

預處理器執行文本替換後,將替換LONG_MAX的任何實例。

相關問題