美文网首页
25_#和##操作符使用分析

25_#和##操作符使用分析

作者: 编程半岛 | 来源:发表于2018-03-11 20:40 被阅读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语言深度解析》所做的笔记,文章中包含狄泰软件资料内容一切版权归狄泰软件所有!

相关文章

网友评论

      本文标题:25_#和##操作符使用分析

      本文链接:https://www.haomeiwen.com/subject/adesfftx.html