这就是C中符号连接的方式。
#define conc(a,b) a ## b
例如:
conc(hello,World)
将制作符号helloWorld
。
我需要知道的有点不同。假设有一个变量n
包含一些整数。现在我需要通过将另一个符号与 n
.
例如:
n = 2
我需要定义一些function(...)
,以便function(symbol,n)
给出symbol1
(不symboln
)以及何时n = 3
,function(symbol,n)
将给出symbol3
等......
我怎么能定义这样的东西?
这是我真正想要实现的。首先,这是用于对微控制器AtmelStudio
进行编程。atmega
那里有 4 个USART
模块,因此有一组单独的寄存器,它们仅根据模块的编号更改名称。
例如,四个模块中的四个波特率寄存器是UBRR0L
, UBRR1L
, UBRR2L
, UBRR3L
。(还有更多,见下文)。
我需要编写一个函数来通过设置相关寄存器的值来初始化给定的模块。由于寄存器名称仅因模块编号而异,如果我可以按照本文中的要求定义一些预处理器指令,我可以编写一个用一些符号表示寄存器名称的函数,因此这些符号将带有相关的寄存器名称和一切都会好起来的。。
例如:
如果我可以定义conc(a,b)
做我需要的,一个简单的功能
void init(int no){
conc(UBRR,no) = 0xF0;
}
将能够用来表示以下所有内容;
UBRR0 = 0xF0;
UBRR1 = 0xF0;
UBRR2 = 0xF0;
UBRR3 = 0xF0;
如果这无法实现,我只知道重新编写四个单独的函数。但希望会有更好的选择..