我有一個關于 C 前處理器的(可能有問題的)學校作業,我應該在其中定義一個宏,它允許
Today is the 9.
編譯為
int a = 9;
注意“。” 9 之后。程式的其余部分類似,我對此沒有任何問題。
現在我將“Today”替換為int( #define Today int),“is”替換為a,“the”替換為=但我不知道如何處理“.”,如果我只是盲目地替換它
#define . ;
我得到一個編譯時錯誤。甚至可以用點做點什么嗎?
uj5u.com熱心網友回復:
是否可以重新定義“。” 在 C 中使用宏?
不。
如果我只是盲目地替換它
#define . ;我得到一個編譯時錯誤。甚至可以用點做點什么嗎?
不,這是不可能的。
首先,.根據 C 的規則,呈現的文本中的 不是單獨的標記。它是 的一部分9.,一個浮點常數。宏替換僅對完整令牌進行。
其次,宏替換不是一般的搜索/替換。宏名稱必須是 C 識別符號,以下劃線或拉丁字母開頭,并且僅包含下劃線、拉丁字母和十進制數字。因此,不能單獨定義.或完整9.定義為宏名稱。
uj5u.com熱心網友回復:
#define Today int
#define is a
#define the = (int)
void foo(void)
{
Today is the 9.;
printf("%d\n", is);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/406086.html
標籤:
上一篇:如何絕對解決scanf輸入流問題
