连接运算符“##”作用
接运算符“##”可以把两个独立的字符串连接成一个字符串。在C的宏中,经常要用到“##”运算符,请看下例:#include<stdio.h>
#define SORT(X) sort_function # # X
void main(vOid);
void main(vOid)
{
char *array;
int elements,element_size;.
SORT(3) (array,elements,element_size);
}
在上例中,宏SORT利用“##”运算符把字符串sort_function和经参数x传递过来的字符串连接起来,这意味着语句
SORT(3)(array,elemnts,element_size);
将被预处理程序转换为语句
sort_function3(array,elements,element_size);
从宏SORT的用法中你可以看出,如果在运行时才能确定要调用哪个函数,你可以利用“##”运算符动态地构造要调用的函数的名称
----------------解决方案--------------------------------------------------------
谢谢!
----------------解决方案--------------------------------------------------------
谢拉
----------------解决方案--------------------------------------------------------
C语言有这个##吗?对这方面熟悉高手请介绍一下。
----------------解决方案--------------------------------------------------------
我也没看过
有TC的试试.
#include<stdio.h>
#define F(x) f##x
void f1()
{
printf("construct f1!\n");
}
void f2()
{
printf("construct f2!\n");
}
main()
{
F(1)();
F(2)();
}
----------------解决方案--------------------------------------------------------
五楼的写的程序好象不对吧
F(1)();
F(2)();
和那个f1() f2() 有关系吗?
我一菜鸟如有冒犯还请谅解
----------------解决方案--------------------------------------------------------
我是拿楼主给出的程序仿照写出来的,按理应该是这样的.
#define SORT(X) sort_function # # X
SORT(3)(array,elemnts,element_size);
将被预处理程序转换为语句
sort_function3(array,elements,element_size);
根据这个我就有 F(1)()<=>f1() F(2)()<=>f2()
呵呵,论坛里人人平等的.谈不上冒犯,有错误是应该指出来的.
希望以后我有什么错的地方都指出来,谢谢.
----------------解决方案--------------------------------------------------------