25_#和##操作符使用分析
2018-03-11 本文已影响13人
编程半岛
关键词:#
运算符、 ##
运算符
1. #
运算符
-
#
运算符用于在预处理期将宏参数转换为字符串 -
#
的转换作用是在预处理期完成的,因此只在宏定义中有效 - 编译器不知道
#
的转换作用 - 用法:
#include <stdio.h>
#define STRING(x) #x
int main()
{
printf("%s\n", STRING(HELLO WORLD!));
return 0;
}
2. #
运算符在工程中的运用
#include <stdio.h>
#define Call(f, p) (printf("Call function %s\n", #f), f(p))
int square(int n)
{
return n * n;
}
int func(int i)
{
return i;
}
int main()
{
int result = 0;
result = Call(square, 4);
printf("result = %d\n", result);
result = Call(func, 10);
printf("result = %d\n", result);
return 0;
}
输出结果:
Call function square
result = 16
Call function func
result = 10
3. ##
运算符
-
##
运算符用于在预处理期粘连两个标识符 -
##
的连接作用是在预处理期完成的,因此只在宏定义中有效 - 编译器不知道
##
的连接作用 - 用法:
// ##运算符将a和b连接一起为 ab
#define CONNECT(a, b) a##b
4. 小结
-
#
运算符用于在预处理期将宏参数转换为字符串 -
##
运算符用于在预处理期粘连两个标识符 - 编译器不知道
#
和##
运算符的存在 -
#
和##
运算符只在宏定义中有效
声明:此文章为本人在学习狄泰软件学院《C语言深度解析》所做的笔记,文章中包含狄泰软件资料内容一切版权归狄泰软件所有!