标题:连接运算符“##”作用
只看楼主
shamm
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2004-4-29
 问题点数:0 回复次数:6 
连接运算符“##”作用
接运算符“##”可以把两个独立的字符串连接成一个字符串。在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 
2004-05-09 20:47
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
得分:0 
谢谢!

差点把你忘了...
2004-05-11 14:47
flytosky
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2004-5-10
得分:0 

谢拉


嘿嘿
2004-05-12 18:33
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
得分:0 
C语言有这个##吗?对这方面熟悉高手请介绍一下。

谁有强殖装甲第二部,可以Q我460054868
2006-10-01 00:17
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
我也没看过
有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)();
}


倚天照海花无数,流水高山心自知。
2006-10-01 09:57
popper
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-8-22
得分:0 

五楼的写的程序好象不对吧
F(1)();
F(2)();
和那个f1() f2() 有关系吗?
我一菜鸟如有冒犯还请谅解

2006-10-01 13:54
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
我是拿楼主给出的程序仿照写出来的,按理应该是这样的.
#define SORT(X) sort_function # # X
SORT(3)(array,elemnts,element_size);
将被预处理程序转换为语句
sort_function3(array,elements,element_size);
根据这个我就有 F(1)()<=>f1() F(2)()<=>f2()



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

倚天照海花无数,流水高山心自知。
2006-10-02 17:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-1247-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.300047 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved