C语言宏定义中#的用处(字符串化)

2023-12-15 19:12:21

现象?

代码中有这么一句:

#define test_func(func, fast, comment) test(#func, func, fast, comment)

调用时这么调:

    test_func(insert_sort,     0, "直接插入排序");
    test_func(bin_insert_sort, 0, "二分插入排序");
    test_func(shell_sort,      1, "希尔排序,步长为2的n次方减一");

实际定义的是func函数:

void test(char *algorithm_name, void (*algorithm)(int r[], int n), int fast, char *comment)
{
    //……
}

理论

在C语言的宏定义中,一个#表示字符串化

在宏定义中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),即无论后面的宏变量是字符串还是常量,都当成字符来处理。

https://www.cnblogs.com/mtcnn/archive/2013/02/01/9410116.html

文章来源:https://blog.csdn.net/weixin_45339670/article/details/135015484
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。