永发信息网

这个宏定义中的#是什么意思

答案:4  悬赏:80  手机版
解决时间 2021-02-20 22:44
代码如下:
#include <stdio.h>

#define print(x) printf("the no, " #x ",is ")

int main(char *argv[], int *argc)
{
print(4);
return 1;
}

就是这里的宏定义中的#,不明白.
唉,我没说清楚.对不起了.
我说的是这个宏定义中的第二个#,就是 #x的这个#号.

谢谢了.
最佳答案
在#define中,标准只定义了#和##两种操作。#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串。
#include <stdio.h>
#define paster( n ) printf( "token " #n" = %d\n ", token##n )
int main()
{
int token9=10;
paster(9);
return 0;
}
输出为
[leshy@leshy src]$ ./a.out
token 9 = 10
全部回答
# 本身为指令 没有其他意义/也没有其他效果 # 号必须是该行除了任何空白字符外的第一个字符。预处理指令就是以#号开头的代码行。 # 后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。 整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。 下面举例说明下: 形式为: #define 标识符 字符串. 其中的“#”表示这是一条预处理命令。凡是以“#”开头的均为预处理命令.。
宏定义,相当于在后面程序中,所有遇到宏定义的地方,直接用后面的式子替代。如 bm定义为 #define bm(n) (1 << (n)) 在后面出现bm(n)的地方,就是直接用 (1 << (n))替换。 bm(1),直接就是执行把1左移一位。 1、val是一个参数,就是给端口赋值的变量参数。 2、^:按位“异或”——仅当两个操作数不同时,相应的输出结果才为1,否则为0。 st( p##port##_##pin## ^= 1; )表示对应的端口pin脚是1时,表达式结果为0,是0时,表达式结果为1。 预定义运算与函数中运算符的运算是一样的,关键在于灵活掌握运算符的含义与使用。 3、表示dir的值与bm(pin)“相或”,结果赋值给dir; 4、表示dir的值与bm(pin)的按位求反的值“相与”,结果赋值给dir。
#x中的#是字符串化运算符,作为是把参数x字符串化,即用双引号包围,例如,在这个程序中: print(4); 参数4经过宏替换并字符串化之后,就成了: printf("the no. " "4" ",is"); 由于相邻的字符串会自动被连接,所以,它最终相当于: printf("the no. 4 ,is");
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
重庆市奎博农业发展有限公司地址有知道的么?
用定积分求阴影面积
通海县正义汽车快修服务中心地址在哪,我要去
平城区大同市财务大厅在哪里啊,我有事要去这
西红柿每千克3元,买3千克西红柿要用多少钱
孕妇什么时候喝奶粉最好?可以最佳补充营养
重庆信息学院金龙校区-第一教学楼地址有知道
屋里的暖气片热度不一样,卧室的片能烫手客厅
his old dream of going around the world ca
复沓从修辞上叫反复吗
是不是水中电解质越多到点效果越好,水的导电
雅洁发屋地址在什么地方,想过去办事
小米4老是自动开关机,怎么回事,求解?
求大神推荐,街车,一万块左右,外观漂亮,不
求歌词:为了理想我们每天都在忙
推荐资讯
天降之物第一季无修版迅雷下载
幼儿园中班故事大象找工作
De De B童装怎么去啊,有知道地址的么
生活在海底的比目鱼的体色能随着环境的变化而
我想问一下 辽宁省朝阳市 都有哪些回民饭店
迎宾放心肉专卖店(津南专卖店)地址在哪,我要
沿江满达乡四季屯满族小学在什么地方啊,我要
逆战太空站一共有几个箱子可以捡
外地户口在武汉贷款买房,有什么限制吗在武汉
只知道一句歌词“从此点亮生命的旋律”,怎么
我想去看看老公,可是他被关在拘留所怎么办呢
handsome的名词是什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?