首页 > 学院 > 开发设计 > 正文

#define定义宏的用法

2019-11-06 08:01:47
字体:
来源:转载
供稿:网友
(一)、简单的,复习一下#define PI 3.1415926#define A(x) ((x)*(x)) 这里的括号必不可少(二)、define的单行定义 ##=连接   #@=加单引号 #x=加双引号 1,#define Conn(x,y) x##y  //表示x连接y,举例说:int n=Conn(123,456); 结果就是n=1234562,#define ToChar(x) #@x //就是给x加上单引号,结果返回一个const char,举例说:char a=ToChar(1);结果就是a='1'做个越界试验char a=ToChar(123);结果就是a='3'但是如果你的参数超过4个字符,编译器就给你报错了!error C2015:too many characters in constant3、#define ToString(x) #x //就是给x加上双引号,例子char *str=ToString(123213);就是str="123132"(三) define的多行定义 使用/=续行#define可以替代多行的代码,例如MFC中的宏定义#define MACRO(arg1,arg2) do {/ /*注释*// stmt1;/ stmt2;/ /*...*//} while(0) /*(no trailing;)*/(四)#define xxx() {} //标准C支持的#define xxx() ({}) GCC新增的功能,主要是为了防止宏展开出现问题,默认展开时是要加上一个;的,容易出问题。表示该宏有返回值,最后一个表达式的返回值作为宏函数的返回值。代码:#define A(a,b,c) ({a=1;b+=1;c=3;a+b+c;})#include <stdio.h>int main(){ int a;int b=1;int c;int d; d=A(a,b,c); PRintf("%d,%d,%d,%d/n",a,b,c,d); return 0;}结果 1,2,3,6(五)#define最重要的功能还是条件编译#ifdef WINDOWS...#else...#endif#ifDef linux...#endif#undef [MACRONAME] //取消定义宏#ifndef PI#define PI 3.1415926#endif
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表