C-lanugage的可攜性是公認的, 可以跨平台執行.
所以各平台之間的compiler應該儘可能的符合可攜性的要求.
但是為了提高執行效率, 符合各平台的機器特徵做一些特殊動作, 例如撰寫組合語言,
使用co-processor, 使用特殊記憶體配置, 使用特殊的compiler能力...等等。
會使用到#pragma 的語法以達到目的,而又不影響沒有這些能力的平台或compile的編譯。
或許你會認為用#ifdef也可以達到目的, 但是#ifdef的方式必須在command line指定一堆定義是很麻煩的, 而且一些特殊能力用#ifdef 也定義不出來. 況且使用你寫的source code的人不見得了解該如何定義以符合他的使用平台或compiler的需求.
compiler看到#pragma時如果後面的定義是它不認得的, 它不會理會; 相反的看得懂得compiler就會去執行它.
參考http://tw.knowledge.yahoo.com/question/?qid=1305100703882
沒有留言:
張貼留言