C define宏定义

基本使用

#include <stdio.h>
#define N 100
int main(){
    int sum = 20 + N;
    printf("%d\n", sum);
    return 0;
}

在这里插入图片描述

一般形式

#define 宏名 字符串
这里所说的字符串是一般意义上的字符序列,不要和C语言中的字符串等同,它不需要双引号。

  • '#'表示这是预处理 命令
  • define 是一条预处理命令
  • 宏名命名规范和标识符一致
  • 字符串 可以是常数, 表达式, 狭义字符串等

举例

  • 反复使用的表达式
#include <stdio.h>
#define M (n*n+3*n)
int main(){
   int sum, n;
   printf("Input a number: ");
   scanf("%d", &n);
   sum = 3*M+4*M+5*M;
   printf("sum=%d\n", sum);
   return 0;
}

在预处理时经宏展开后该语句变为:sum=3*(nn+3n)+4*(nn+3n)+5*(nn+3n);
需要注意的是,在宏定义中表达式(nn+3n)两边的括号不能少,否则会发生错误。

注意点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#define PI 3.14159
int main(){
   // Code
   return 0;
}
#undef PI
// 表示PI只在main函数中有效,在func中无效。
void func(){
   // Code
}
  1. 宏名在源程序中若用引号括起来,则预处理程序不对其作宏代换,例如:
#include <stdio.h>
#define OK 100
int main(){
   printf("OK\n");
   return 0;
}
//运行结果:OK
  1. 宏定义允许嵌套
  2. 习惯上宏名用大写字母表示,以便于与变量区别。但也允许用小写字母
  3. 可用宏定义表示数据类型,使书写方便。
    与typedef 不同

参考链接

http://c.biancheng.net/cpp/html/65.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值