[問題] macro定義問題 (已解決)

作者: james732 (好人超)   2017-05-04 18:52:01
開發平台(Platform): (Ex: Win10, Linux, ...)
windows 10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
gcc 4.4.4
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
none
問題(Question):
我需要把一些變數放到section裡
__attribute__((section(.data.james.foo1))) int var1;
__attribute__((section(.data.james.foo2))) int var2;
主要是foo1, foo2那邊會改
因此我想要做個marco,做到這樣
MY_SECTION(foo1) int val1;
MY_SECTION(foo2) int val2;
試著寫了
#define MY_SECTION(name) __attribute__((section(.data.james.##name)))
不過無法通過編譯
想知道要怎麼修改,才能正確的達到我的目的
另外C語言的pre-processor有沒有比較好的文件 orz
作者: Hazukashiine (私は幸せです)   2017-05-04 19:05:00
## 是 string concatenation 這裡應該不需要
作者: pttworld (批踢踢世界)   2017-05-04 19:35:00
可以考慮define .data.jame, 再包一層把這個define傳入,傳入後##
作者: Hazukashiine (私は幸せです)   2017-05-04 20:04:00
作者: LPH66 (-6.2598534e+18f)   2017-05-04 20:15:00
提一件事, 無法編譯有很多種, 貼個錯誤訊息上來吧說不定根本就不是 preprocessor 沒弄好而是其他問題等等, 要加引號的話那可能需要字串化的 #你那樣出來的東西可能會在 ".data.james.name"用個 objdump 確定一下東西對不對吧如果確實需要的話, 寫法是 section(".data.james." #name)
作者: james732 (好人超)   2017-05-04 20:26:00
我剛剛發現它編譯過就很開心的以為解決了XD
作者: LPH66 (-6.2598534e+18f)   2017-05-04 20:26:00
preprocessor 會取代成 section(".data.james." "foo1")

Links booklink

Contact Us: admin [ a t ] ucptt.com