我在做宏的基礎知識。我定義一個宏如下:
整數到字符串轉換器(使用宏)
#define INTTOSTR(int) #int
將整數轉換爲字符串。
這個宏是否完美地將整數轉換爲字符串?我的意思是有些情況下這個宏可能會失敗?
我可以用這個宏來代替itoa()
這樣的標準庫函數嗎?
例如:
int main()
{
int a=56;
char ch[]=INTTOSTR(56);
char ch1[10];
itoa(56,ch1,10);
printf("%s %s",ch,ch1);
return 0;
}
上述程序按預期方式工作。
有趣的是,這個宏甚至可以將float
的值轉換爲字符串。
例如:
INTTOSTR(53.5);
很好地工作。
到目前爲止,我在使用itoa
函數將int轉換爲我所有項目中的字符串。我可以自信地在所有項目中更換itoa
。因爲我知道使用宏比函數調用的開銷少。在
你試過'INTTOSTR(a)'嗎? –
'INTTOSTR(SOME_CONSTANT)' - 哎呀。這基本上是一個普通的字符串化宏,除了只用於整數,這不是太有用,特別是考慮到它接受其他的東西。 – chris
C++ 11具有此['to_string'](http://www.cplusplus.com/reference/string/to_string/)的功能。關於宏有幾個問題。 – 101010