您好,欢迎来到伴沃教育。
搜索
您的当前位置:首页25_#和##操作符使用分析

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

来源:伴沃教育

关键词:#运算符、 ##运算符

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语言深度解析》所做的笔记,文章中包含狄泰软件资料内容一切版权归狄泰软件所有!

Copyright © 2019- bangwoyixia.com 版权所有 湘ICP备2023022004号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务