c - 头文件中使用的宏语句,但在其外部定义

标签 c macros header

我正在为微 Controller 编写一些库,并且我已根据它们的功能将这些库分成几个部分。例如,我有 adc.h 来配置模拟输入测量,uart.hi2c.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/

相关文章:

c++ - 用于在 auto_ptr 和 unique_ptr 之间切换的宏

c - 宏扩展和字符串化 : How to get the macro name (not its value) stringified using another macro?

android - 我如何添加自定义 header 以在 webview 上发布请求

c - 如何从函数中的矩阵指针赋予值属性

包含的C文件也可以直接运行吗?

c++ - 使用WIC(Windows镜像组件)时遇到的问题

用于游戏的 Python 一键宏

css - 调整窗口大小时, Logo 到处移动

angular - 如何从 Angular 2 响应中获取所有 header ?

c++ - 高频套接字通信