2012-10-12 4 views
5

Mögliche Duplizieren Berechnung in Prä-Prozessor auszuführen:
How to stringify an expression in CWie mit stringification in C

Ich hoffe, dass ich hier eine Lösung meiner Frage finden.

Ich möchte die Hexadezimalzahlen, die in ADD1 definiert sind, hinzufügen und müssen dasselbe in *str in Zeichenfolgenform setzen.

Dies ist nur ein Beispiel, um seine Möglichkeit zuerst zu beweisen. Ich bin eigentlich macht das gleiche in einer Header-Datei.

#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

Sie wollen also eine "0x6010" Zeichenfolge? – Ancurio

+0

@ouah Anforderung ist ähnlich, aber ich muss das gleiche in Header-Datei tatsächlich tun. – linuxexplore

+0

@Ancurio Ja, ich möchte "0x6010" – linuxexplore

Antwort

4

Nein, Sie können keine Berechnungen durchführen Präprozessor verwenden. Es ist im Wesentlichen ein Textersetzer.

Sie können sprintf() verwenden und das hinzugefügte Ergebnis in str drucken, für das Sie ADD1 verwenden können.

+1

Ja, um es explizit zu machen, wird sprintf nicht Teil des Präprozessors sein. Es wird nur ausgeführt, wenn der Compiler ausgeführt wird, der nach dem Präprozessor – fayyazkl

+0

ist meine ich kann das nicht in der header-datei? ich suche nach einem hack wenn es gibt ;-) – linuxexplore

+1

ja, das geht nicht. Sie können jedoch etwas wie http://ideone.com/CHQLA oder http://ideone.com/1VNUs versuchen. –