C++ ifndef /define/ endif 作用和用法


ifndef/define/endif”主要目的是防止頭文件的重復包含和編譯  

   比如你有兩個C文件,這兩個C文件都include了同一個頭文件。而編譯時,這兩個C文件要一同編譯成一個可運行文件,於是問題來了,大量的聲明沖突。 
還是把頭文件的內容都放在#ifndef和#endif中吧。不管你的頭文件會不會被多個文件引用,你都要加上這個


1.用法::標識的命名規則一般是頭文件名全大寫,前后加下划線,並把文件名中的“.”也變成下划線,如:stdio.h 

  .h文件下

  #ifndef XX_H     //放在XX.h被重復引用

  #define XX_H 

  .....

  #endif

 

2.舉個例子:

假設你的工程里面有4個文件,分別是Stock.cpp,     b.h,      c.h,     d.h。
Stock.cpp的頭部是:
  #include "b.h "
  #include "c.h "

b.h和c.h的頭部都是:
#include "d.h "
而d.h里面有class Stock的定義。


運行:
編譯器編譯Stock.cpp的時候,先根據頭文件#include "b.h "去編譯b.h這個問題,再根據b.h里面的#include "d.h ",去編譯d.h的這個文件,這樣就把d.h里面的class D編譯了;
然后再根據Stock.cpp的第二句#include "c.h ",去編譯c.h,最終還是會找到的d.h里面的class D,但是class D之前已經編譯過了,所以就會報重定義錯誤。

加上ifndef/define/endif,就可以防止這種重定義錯誤。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM