美文网首页
关于宏定义中的#与##

关于宏定义中的#与##

作者: alan2yang | 来源:发表于2022-05-06 09:55 被阅读0次

先看代码:

#include <iostream>

#define display1(name) std::cout<<#name<<std::endl
#define display2(name) std::cout<<"#name"<<std::endl
#define display3(name) std::cout<<""#name""<<std::endl

void test_command(char* content){std::cout<<content<<std::endl;}
void help_command(char* content){std::cout<<content<<std::endl;};

struct Command {

    char *name;

    void (*function)(char*);

};

#define COMMAND(NAME) { #NAME, NAME##_command }


int main() {

    display1("name1");
    display1(name1);

    display2("name2");
    display2(name2);

    display3("name3");
    display3(name3);

    struct Command commands[] = {COMMAND(test),COMMAND(help)};

    for (auto item:commands) {
        item.function(item.name);
    }

    return 0;
}

执行结果:

"name1"
name1
#name
#name
"name3"
name3
test
help

1.#的功能是将其后面的宏参数进行字符串化操作
2.## 被称为连接符

相关文章

  • 关于宏定义中的#与##

    先看代码: 执行结果: 1.#的功能是将其后面的宏参数进行字符串化操作2.## 被称为连接符

  • 精解C语言预处理命令(三)之“宏”的用法二

    关于C语言带参数的宏定义中的参数 C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实...

  • swift&&OC

    宏定义 OC中的宏定义 swift中的宏定义 OC中宏定义的方式,在swift中是不可用的,在swift中,宏定义...

  • 关于弱符号和弱引用

    宏定义 关于上述宏定义的说明 强符号 弱符号 弱引用

  • c高级自我学习(1)

    1 编译预处理和宏定 #undef指令删除前面定义的宏定义。 无参宏定义:宏名中没有参数。 1,宏定义中宏名用来表...

  • C语言学习:C语言宏定义

    学C语言很久了,但还是不敢用宏定义,大神喜欢用宏定义。关于宏定义你又了解多少了,下面我们说一下宏定义。 宏定义的概...

  • iOS中关于宏定义与常量的使用

    学习基础知识,看了两篇文章,记个笔记1、【如何正确使用const,static,extern】|那些人追的干货2、...

  • iOS中关于宏定义与常量的使用

    现在在做的这个产品,由于需求不断的添加,工程越来越大,编译速度是越来越慢。之前就看过帖子: 使用宏定义过多的话,随...

  • 总结

    宏定义:宏定义的分为无参宏定义与有参宏定义。无参宏定义的一般形式为:#define 标识符 字符串。‘#’表示...

  • Objective-C 宏定义

    1. 判断设备 2. 基本的使用 3. 关于#与##的操作符 宏定义中字符串操作符#:#的功能是将其后面的宏参数进...

网友评论

      本文标题:关于宏定义中的#与##

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