C语言连字符##一边能否使用变量
请教高手个问题,C语言连字符##可否使用变量
是否只能在宏定义中使用?
测试来看,好像不行? 下面例子中22,24行都不正确!
1 #include "stdio.h"
2 #include "stdlib.h"
3
4 #define uart_as_func(port) \
5 uart_as_func##port()
6
7 #define uart_ss_func(port) \
8 uart_as_func#port()
9
10 void uart_as_func3()
11 {
12 printf("dfasdfad\n");
13 }
14
15 void uart_as_func33()
16 {
17 printf("sdgdgsf\n");
18 }
19 int main(int argc, char **argv)
20 {
21 int port = 3;
22 //uart_as_func##3();
23 uart_as_func(3);
24 //uart_as_func(port);
25 printf("uart_as_func##port\n");
26 printf("uart_as_func###port\n");
27 return;
28 }
[解决办法]
##属于宏语言,在编译器起作用,显然不可以用于变量
[解决办法]
1、##是在预编译阶段展开的,不能用于变量;
2、##也不能用于函数和变量名,因为编译器会把它当作非法字符。