首页 > 代码库 > C语言中宏的使用(#,##,do…while(0)宏)
C语言中宏的使用(#,##,do…while(0)宏)
C语言中宏的使用(#,##,do…while(0)宏)
1.预定义宏的使用__FILE__,__FUNCTION__,__LINE__。
#include <stdio.h> void fun(void) { char v1; short v2; int v3; long v4; printf("v1: %x\n",&v1); printf("v2: %x\n",&v2); printf("v3: %x\n",&v3); printf("v4: %x\n",&v4); printf("file is :%s,\tfunction is: %s,\tline is :%d\n",__FILE__,__FUNCTION__,__LINE__); } int main() { fun(); printf("file is :%s,\tfunction is: %s,\tline is :%d\n",__FILE__,__FUNCTION__,__LINE__); return 0; }
2.#宏字符串化
#include<stdio.h> #define dprintf(expr) printf("<main>%s=%d\n",#expr,expr) int main() { int x=100; int y=2; dprintf(x/y);//#expr相当于x/y expr是x/y的运算结果 #是字符串化操作 dprintf(x+y); dprintf(x+y+2); return 0; }
3.##连接字符串
#include<stdio.h> #define test(x) test ##x void test1(int a) { printf("Test 1 integer: %d \n",a); } void test2(char *s) { printf("Test 2 String: %s \n",s); } int main () { test(1)(100); //test(1)等价于test; test##1等价于test1;##连接字符 test(2)("hello"); return 0; }
4.do...while(0)宏
#include<stdio.h> #define hello(str) do{ printf("Hello:%s\n",str); }while(0) int main() { int m=0; if(m) { hello("hello true"); } else hello("hello false"); system("pause"); return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。