我正在为微 Controller 编写一些库,并且我已根据它们的功能将这些库分成几个部分。例如,我有 adc.h
来配置模拟输入测量,uart.h
和 i2c.h
用于数字通信等。
其中一些库需要有关 CPU 速度的信息,因此我定义了一个宏语句
#define FCY 30000000UL
在所有需要这条信息的头文件中。我的问题是,我能否以某种方式对这些头文件进行编程,使 FCY
宏仅在头文件中“声明”,但在其外部定义,例如在 main.c
文件中?问题是,当我改变 CPU 速度(频率)时,我必须更新所有这些 FCY
宏语句,这很容易出错。
最佳答案
我建议提供一个单独的头文件,例如 hardware_constants.h
用于需要在多个 .h
文件或 c
-文件。在需要的地方包含 hardware_constants.h
,而不是多次(重新)定义同一事物。
您甚至可以让调用编译器的人提供这些定义,例如在命令行、生成文件或 IDE 的项目设置中。
一些 IDE 提供自动包含在每个翻译单元之前的 header 。例如,在 XCode 项目中,您可以将常见的 #define ...
语句放在名为 PrefixHeader.pch
的文件中,这些定义将在每个源中隐式可用代码文件。
关于c - 头文件中使用的宏语句,但在其外部定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42182034/