2017-04-05 38 views
0

所以,我感興趣的是一個類似於__LINE__的宏,但不是返回行號,而是可以返回給定行內的位置。C++宏與__LINE__類似,但在給定行中找到位置?

它可能是在列或字符方面的位置。例如,在代碼:

#define THISCHAR 
int main(void) 
{ 
    THISCHAR 
} 

CHAR返回值應當是5,因爲它在它的線的字符5的位置,或可能返回1,因爲它是第一個非空的炭該線。任何一個選項都可以爲我工作。

在編譯期間可以實現這樣的事情嗎?

+0

不,這在我知道的任何編譯器中不受支持,因爲在標記化過程中空白字符被剝離。其次,由於預處理器中的令牌替換,很難判斷一行中的某個位置(在函數調用之後)是否在宏之後,並且會涉及預處理器的另一次傳遞。 – callyalater

回答

2

不是我所知,沒有。雖然有些是由C99標準定義的,但這些宏的其餘部分是特定於您的編譯器的,AFAIK不是由語言本身定義的。

如果您使用的是Visual Studio,以下是預定義宏的列表: https://msdn.microsoft.com/en-us/library/b0084kay.aspx 那裏也是標準的宏。

我不知道你會使用這樣一個宏。對於

__LINE__ 

它經常標記發生錯誤的表達式,例如用作異常中的字段。我無法理解列的用法,因爲事物被評估爲語句和表達式,而不是一次一個字符。

相關問題