gpt4 book ai didi

c - C语言中的"#define something something"

转载 作者:行者123 更新时间:2023-12-05 01:05:46 25 4
gpt4 key购买 nike

我正在查看一些微 Controller C 头文件,并且有这样的代码:

#define OSCCONL OSCCONL
extern volatile uint8_t OSCCONL __attribute__((__sfr__));
#define OSCCONH OSCCONH
extern volatile uint8_t OSCCONH __attribute__((__sfr__));
#define CLKDIV CLKDIV
extern volatile uint16_t CLKDIV __attribute__((__sfr__));
__extension__ typedef struct tagCLKDIVBITS {...}

那些重复的“#define A A”的目的是什么?

最佳答案

由于预处理器对 C 语言和变量一无所知,因此您需要添加一些定义才能知道变量(变量)是否将在 C 代码中定义。您可以稍后在代码中使用这些定义。

例子:

#if defined(OSCONL)
OSCONL = something;
#endif

如果你的微 Controller 没有这个寄存器,这部分代码将不会被编译。这是一种非常常见的技术。

编辑:

But wouldn't that work the same if it just had #define OSCCONL

这个想法是有相同的 #define 作为变量或函数名。它使代码保持一致且易于内存。

否则,您将不得不使用不同的 #define 和对象名称,这使得编码更加困难,因为我们必须同时记住这两者。在此约定中,您可以阅读 uC 的文档并使用相同的名称来检查此对象是否存在,而无需记住 #define 是如何调用的。

关于c - C语言中的"#define something something",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70348751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com