2011-09-02 73 views
2

我可以這樣做將所有文件包含在一個.h文件中,並將該文件包含到AVR的各個地方是一種很好的做法嗎?

/*includeAll.h*/ 

#ifndef INCLUDEALL_H_ 
#define INCLUDEALL_H_ 1 

#include <avr/io.h> 
#include <avr/pgmspace.h> 
#include <avr/interrupt.h> 
#include "DataTypeDefs.h" 

#include "timer_api.h" 
#include "uart_api.h" 
#include "RTC_PCF8563.h" 
#include "TWI_Master.h" 
#include "ADC_LTC1859.h" 
#include "spi.h" 
#include "AT45DB161D_UART_AS_mSPI.h" 

#include "Utilities.h" 

#ifndef F_CPU 
#define F_CPU 16000000UL 
#endif 

#include <util/delay.h> 


#include <string.h> 

#endif /* INCLUDEALL_H_ */ 

,包括這個includeAll.h文件隨處可見。 無處不在意味着所有的項目文件。

類似的宏如#define INCLUDEALL_H_ 1已用於所有其他文件。

我發現在編譯時需要很長的時間。

+1

但是,您可以消除模塊化代碼的某些優點,編譯模塊和鏈接。 – Jeff

回答

2

除了編譯時間的懲罰,這樣做會使代碼的更改/移植/重構變得更加困難。

我有一個通用規則,我將依賴關係保持在絕對最小值。它並不需要太多的工作,包括在適當的地方丟失的頭,後來又爲您節省了很多頭疼的。

1

您可以使用您的includeAll.h作爲precompiled header。我會建議改變擴展.pch

+0

如何在AVR Studio 5 IDE中執行此操作? – Rick2047

+0

問題被視爲avr-gcc,你有鏈接到avr的gcc文檔嗎? – Joe

相關問題