唐老大
来源:互联网 发布:sql sever 视图创建 编辑:程序博客网 时间:2024/04/26 12:19
在c语言中,有两个容易被忽略的操作符,分别是#和##。先介绍#符号的作用,下次再介绍##号的作用。
1.#运算符用于在预处理期将宏参数转换为字符串
2.#的转换的作用是在预处理期完成的,因此只在宏定义中有效
3.编译器并不知道#的转换作用
下面开始举例:
#include <stdio.h>
#define STRING(x) #x
int main()
{
printf("%s\n", STRING(Hello world!));
printf("%s\n", STRING(100));
printf("%s\n", STRING(while));
printf("%s\n", STRING(return));
return 0;
}
下面我们单步编译一下:gcc -E 1.c -i 1.i 得到下面结果
通过#号的作用我们可以动态的知道调用的函数名字
#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 x)
{
return x;
}
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;
}
编译的结果如下所示:
- 唐老大
- 老大
- 忆老大
- 老大语录
- 郭老大
- ICT老大
- 老大语录
- 请教老大问题
- 老大们帮帮我
- ORACLE老大的演讲
- 老大的farewell
- Web才是老大!
- Web才是老大!
- WEB才是老大!
- 谁才是老大
- 老大回国了,哈!
- QQ老大的作风!
- 老大退休了
- sqlserver修改自增主键设置
- 圆圈中最后剩下的数字(约瑟夫环问题)
- dd
- ViewPager简单实现
- AndroidStudio配置jdk1.8
- 唐老大
- POJ 2318 TOYS 【二分】【点线关系】
- HttpClint(POST)
- sqoop介绍与安装
- Webshell
- (推荐)智能指针boost::weak_ptr 详解
- [leetcode]65. Valid Number@Java
- JAVA企业面试题精选 Java SE 41-50
- Android编码规范记录