当前位置: 代码迷 >> C语言 >> 连接运算符“##”作用
  详细解决方案

连接运算符“##”作用

热度:828   发布时间:2004-05-09 20:47:00.0
连接运算符“##”作用
接运算符“##”可以把两个独立的字符串连接成一个字符串。在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的用法中你可以看出,如果在运行时才能确定要调用哪个函数,你可以利用“##”运算符动态地构造要调用的函数的名称
搜索更多相关的解决方案: 算符  SORT  接运  element  array  

----------------解决方案--------------------------------------------------------
谢谢!
----------------解决方案--------------------------------------------------------

谢拉


----------------解决方案--------------------------------------------------------
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()



呵呵,论坛里人人平等的.谈不上冒犯,有错误是应该指出来的.
希望以后我有什么错的地方都指出来,谢谢.
----------------解决方案--------------------------------------------------------
  相关解决方案