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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!