※ 引述《MaxHaru (懂得放手..才是王道)》之銘言:
: 請教各位,
: 我知道Keil C可以在環境中設定function要放在哪個位址.
: 現在想用#if / #endif來定義function存不存在,
: 結果發現, 當環境設定中設定了function要放在哪位址址.
: 但#if定義function不存在時, Keil C Compile會有問題.
: 所以想來這裡請教, 是否有什麼方法可以直接在source code直接定義function的位址.
: EX:
: #if exist
: ...定義function的位址...
: ...function定義...
: #endif
: 謝謝.
在Keil C當中直接指定function的位址,
其實這個動作是在Linker階段執行的,
所以如果Compiler因為macro把function忽略掉,自然就沒有symbol給Linker去安排
如果只是要取得function的位址,可以考慮透過function pointer取得function的位址
這樣可以在Compiler階段用macro整個disable掉
缺點是,沒辦法將function固定在特定位址