2012-10-12 31 views
5

thể trùng lặp:
How to stringify an expression in CLàm thế nào để thực hiện tính toán trong tiền xử lý với stringification trong C

Tôi hy vọng tôi có thể tìm thấy một số giải pháp về vấn đề của tôi ở đây.

Tôi muốn thêm các số hex được xác định trong ADD1 và cần đặt giống nhau trong *str ở dạng chuỗi.

Đây chỉ là ví dụ để chứng minh khả năng của nó trước tiên. Tôi thực sự là cũng làm như vậy trong tệp tiêu đề.

#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

Vì vậy, bạn muốn có chuỗi "0x6010"? – Ancurio

+0

@ouah yêu cầu là tương tự nhưng tôi phải làm tương tự trong tệp tiêu đề thực sự. – linuxexplore

+0

@Ancurio Có tôi muốn "0x6010" – linuxexplore

Trả lời

4

số Bạn không thể thực hiện các tính toán sử dụng tiền xử lý. Nó chủ yếu là một công cụ thay thế văn bản.

Bạn có thể sử dụng sprintf() và in kết quả đã thêm vào str để bạn có thể sử dụng ADD1.

+1

Vâng để làm cho nó rõ ràng, sprintf sẽ không là một phần của tiền xử lý. Nó sẽ chỉ thực thi khi trình biên dịch chạy sau bộ tiền xử lý – fayyazkl

+0

Vì vậy, đó là có nghĩa là tôi không thể làm điều này trong tập tin tiêu đề? tôi đang tìm kiếm một số hack nếu có ;-) – linuxexplore

+1

có, bạn không thể làm điều đó. Tuy nhiên, bạn có thể thử một cái gì đó như http://ideone.com/CHQLA hoặc http://ideone.com/1VNUs. –

Các vấn đề liên quan