2012-10-12 68 views
5

可能重複:
How to stringify an expression in C如何預處理與字串用C進行計算

我希望我可以在這裏找到我的問題的一些解決方案。

我想添加在ADD1定義的十六進制數,需要把同樣的*str字符串形式。

這只是一個例子,首先證明其可能性。我實際上是 在頭文件中做同樣的事情。

#include <stdio.h> 


#define XMK_STR(x)  #x 
#define MK_STR(x)  XMK_STR(x) 
#define ADD1 0x6000+0x10 

main() 
{ 
     char *str = "START " MK_STR(ADD1) "\n"; 
     printf(str); 
} 
+1

所以,你希望有一個「0x6010」字符串? – Ancurio

+0

@ouah的要求是相似的,但我必須在頭文件中做同樣的事情。 – linuxexplore

+0

@Ancurio是的,我想「0x6010」 – linuxexplore

回答

4

號不能使用預處理進行計算。它本質上是一個文本替代品。

您可以使用sprintf()並將添加的結果打印到str,因爲您可以使用ADD1

+1

呀,清楚,sprintf的不會是預處理程序的一部分。當編譯器運行這是預處理器 – fayyazkl

+0

後,所以這是它只會執行意味着我不能做到這一點在頭文件?我找一些黑客如果有;-) – linuxexplore

+1

是的,你不能這樣做。但是,您可以嘗試諸如http://ideone.com/CHQLA或http://ideone.com/1VNUs之類的內容。 –