嵌入式C语言入门——关键字&宏

预处理

宏函数

  • 避免了函数的入栈、出栈、跳转等开销,可以提高程序运行效率
  • 多次调用,会是代码变的庞大,以空间换时间
  • 避免替换错误需要添加括号
#define AAD(x, y) (x + y)
#define MAX(x, y) ( (x > y) ? (x) : (y) )

宏的有效范围

  • 从宏定义的位置开始到文件结束或者取消宏定义
  • 不做作用域检测
  • 不做类型检测
void test()
{
    #define NUM 10
}

int main()
{
    printf("%d\n", SUM);
}

撤销宏

#undef SUM

内置宏

printf("代码在 %d 行\n", __LINE__);
printf("代码编译的时间%s %s\n", __DATE__, __TIME__);
printf("文件名 %s\n", __FILE__);
printf("函数名%s\n", __FUNCTION__);

条件编译ifdef

#ifdef 标识符
    程序段1
#else
    程序段2
#endif
 
它的功能是:如果标识符已被#define命令定义过,则对程序段1进行编译;
否则对程序段2进行编译。如果没有程序段2(它为空),本格式中的#else可以没有,#endif不可或缺
#include <stdio.h>
 
int main()
{
  #ifdef _DEBUG
     printf ("正在使用DEBUG模式编译代码。。。\n");
  #else
     printf ("正在使用Release模式编译代码。。。。\n");
  #endif
 
  return 0;
}

编译的时候增加宏:gcc -D_DEBUG


#if 常量表达式
    程序段1
#else
    程序段2
#endif
它的功能是:如果常量表达式的值为真(非0),则对程序段1进行编译;
否则对程序段2进行编译。因此可以使程序在不同条件下编译,完成不同的功能。
#include <stdio.h>
// window  _WIN32
// Linux   __linux__
 
int main()
{
    #if (_WIN32
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值