#include "*.c"文件的妙用


在看uCOS II V2.91版本源代碼時,在ucos_ii.c源文件中發現下面的代碼:

 

 1     #include <os_core.c>  
 2     #include <os_flag.c>  
 3     #include <os_mbox.c>  
 4     #include <os_mem.c>  
 5     #include <os_mutex.c>  
 6     #include <os_q.c>  
 7     #include <os_sem.c>  
 8     #include <os_task.c>  
 9     #include <os_time.c>  
10     #include <os_tmr.c>  

 

在之前,我將ucos_ii.c與上面的os_core.c等都添加到工程編譯,出現許多“重復定義”的錯誤。

之后,將os_core.c等文件都從工程中移除,只保留ucos_ii.c,則編譯通過!


我們知道,通過#include "*.h"可以引用其它源文件中導出的符號,

而通過使用#include "*.c"文件可以控制要將哪些源文件編譯到工程中。


比如,這里如果不需要消息郵箱功能和互斥信號功能,則將對應的.c文件注釋即可,

 

    #include <os_core.c>  
    #include <os_flag.c>  
    //#include <os_mbox.c>  
    #include <os_mem.c>  
    //#include <os_mutex.c>  
    #include <os_q.c>  
    #include <os_sem.c>  
    #include <os_task.c>  
    #include <os_time.c>  
    #include <os_tmr.c>  

 

因此,在大型的項目中,如果我們要測試不同的功能,可以為每個功能建立一個.c類型的配置文件,在該配置文件中將需要編譯的功能.c文件#include進來就OK,而不用麻煩地在每次測試不同功能時都重復的把舊的功能文件刪除,再添加新的功能文件。


通過控制要編譯的文件,可以減少最終生成代碼的代碼段長度,節省存儲空間。

許多程序設計人員沒有絲毫的節省存儲空間的概念,經常把與工程無關的文件包含到工程中。

 


免責聲明!

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



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