#define 問題

請問一下~#define #undef #ifdef 等等.....這些在標頭檔和主程式中要怎要樣用呢,

可否舉例詳細說明

還有這一題

#define SQ(x) x*(x)

#undef YES

#define NO

main()

{printf(\"SQ(3+4)=%d\\n\",SQ(3+4));

#ifdef YES

printf(\"YES\\n\");

#elif defined(NO)

printf(\"NO\\n\");

#else

printf(\"OK\\n\");

#endif

}

----------------------------------------------------

以上怎樣跑的阿??拜託教到我會吧~<(_ _)>

(p.s 還有這邊:http://tw.knowledge.yahoo.com/question/?qid=120604... )

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    #undef  YES#define NO類似巨集的功能,會於編譯前 先將此區轉出來, 以此程式來解說當編譯時 因為 yes 被undef 了所以 #ifdef YES 不成立所以在編譯時 只會編譯 #else ~ #endif 的區塊#ifdef YES#else#endif#ifdef 應用在  debug  system不同的程式相異出曲別出來 讓編譯器選擇對的環境來編譯#define  還有一個可以定義 const 常數#define SQ(x) x*(x)這個是巨集函式, 但並不是真的函式 有也像 inline在source 裡 只要有 sq(x)  ,編譯器都會在編譯前轉換成 x*(x)printf("SQ(3+4)=%d\n",SQ(3+4)   printf("SQ(3+4)=%\n",3+4*(3+4));看吧 出現問題了吧   你的目的應該提 (3+4)(3+4)吧因為你的巨集函式是  x*(x) 所以你應該改為  (x)*(x) 會較好

  • Anonymous
    6 years ago

    【亞洲36588合法彩券公司直營 官網: A36588.NET 】

    【 最新活動→迎接新會員,首存狂送20% 】

    【運動→電子→對戰→現場→彩球 】

    【免費服務 →電影區、討論區、KTV歡唱、運動轉播、即時比分、24H客服 】

    【亞洲36588合法彩券公司直營 官網: A36588.NET 】

Still have questions? Get your answers by asking now.