2012-10-12 27 views
5

Powiel możliwe:
How to stringify an expression in CJak wykonać obliczenia w preprocesora z stringification w C

Mam nadzieję, że znajdę jakieś rozwiązanie mojego problemu tutaj.

Chcę dodać liczby szesnastkowe zdefiniowane w ADD1 i trzeba umieścić to samo w *str w formie ciągu.

To tylko przykład, aby udowodnić swoją możliwość jako pierwszy. W rzeczywistości jestem robi to samo w pliku nagłówkowym.

#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

Więc chcesz ciąg "0x6010"? – Ancurio

+0

Wymaganie @ouah jest podobne, ale muszę zrobić to samo w pliku nagłówkowym. – linuxexplore

+0

@Accurio Tak, chcę "0x6010" – linuxexplore

Odpowiedz

4

No. Nie można wykonywać obliczenia za pomocą preprocesora. Zasadniczo jest to zamiennik tekstu.

Możesz użyć sprintf() i wydrukować dodany wynik do str, który można wykorzystać pod numerem ADD1.

+1

Tak, aby było to wyraźne, sprintf nie będzie częścią preprocesora, będzie on wykonywany tylko wtedy, gdy uruchomi się kompilator, który jest po preprocesorze – fayyazkl

+0

. nie mogę tego zrobić w pliku nagłówkowym? szukam jakiegoś hack'a jeśli jest ;-) – linuxexplore

+1

tak, nie możesz tego zrobić. Możesz jednak wypróbować coś takiego jak http://ideone.com/CHQLA lub http://ideone.com/1/1VNUs. –