#、和##
来源:互联网 发布:淘宝网红模特 编辑:程序博客网 时间:2024/04/24 23:25
The # and ## operators are used with the #define macro. Using # causes the first argument after the # to be returned as a string in quotes. Using ## concatenates what's before the ## with what's after it.
1.#
假如希望在字符串中包含宏参数,ANSI C允许这样作,在类函数宏的替换部分,#符号用作一个预处理运算符,它可以把语言符号转化程字符串。例如,如果x是一个宏参量,那么#x可以把参数名转化成相应的字符串。该过程称为字符串化(stringizing).
#incldue <stdio.h>
#define PSQR(x) printf("the square of" #x "is %d.\n",(x)*(x))
int main(void)
{
int y =4;
PSQR(y);
PSQR(2+4);
return 0;
}
输出结果:
the square of y is 16.
the square of 2+4 is 36.
第一次调用宏时使用“y”代替#x;第二次调用时用“2+4"代#x。
2.##
##运算符可以用于类函数宏的替换部分。另外,##还可以用于类对象宏的替换部分。这个运算符把两个语言符号组合成单个语言符号。例如:
#define XNAME(n) x##n
这样宏调用:
XNAME(4)
展开后:
x4
程序:
#include <stdio.h>
#define XNAME(n) x##n
#define PXN(n) printf("x"#n" = %d\n",x##n)
int main(void)
{
int XNAME(1)=12;//int x1=12;
PXN(1);//printf("x1 = %d\n", x1);
return 0;
}
输出结果:
x1=12
http://www.cnblogs.com/zhujudah/archive/2012/03/22/2411240.html
- . 和 ->
- || 和&&
- .和::
- “?”和“!”
- #和##
- && 和 ||
- 、和
- #和##
- .//和..//
- 和
- ?和\?
- ./ 和 ../
- #和##
- #、和##
- #和##
- *和&
- <和>
- $*和¥$@
- 剑指offer:3-二维数组中的查找
- java回收机制使用 WeakHashMap
- 用const、enum、inline替代#define
- android学习笔记---android常用的软件布局方式,使用方法总结
- 使用Client Listener调用服务器端方法
- #、和##
- (22)io流字节流
- (23)io流file
- Lua函数的多个返回值
- jQuery实现Ajax异步提交表单实现局部刷新
- (24)io流其他流对象
- (25)gui
- (26)网络编程socket
- 硬件工程师必杀技