嵌入式C语言常见编译错误举例--学习笔记1

C语言常见错误距离

1、预处理错误
  1. not find 原因:

    • #include “name”

    • #include 尖括号只会在系统找,不会在当前目录找

      解决方法:gcc - I跟查找头文件

  2. 编译错误

    • 语法错误 ; {}
  3. 链接错误: collect2: 链接器在报错

    • 原材料不够 undefined reference to 'fun’
    • 解决方法:
      • 将函数内容补齐
      • gcc
2、C语言预处理介绍
  1. 第一类:包含类

    • ​ #include 包含头文件

    • ​ #define 宏/替换 是不进行语法检查的

      • #define 宏名(全部是大写字母) 宏体 加括号好习惯

      ​ #define ABC (5+3)

      ​ printf(“the %d\n”,ABC*5);

  • 宏函数 #define ABC(x) (5+(x))

  • #ifdef #else #endif 条件编译

  1. 预定义宏 主要在调试中会使用

    • FUNCTION 两边由两个下划线 :函数名
    • _LINE:_行号
    • FILE:文件名
  2. 条件预处理的应用

    • 调试版本

      • #include <stdio.h>
        //#define ABC
        int main(){
        #ifdef  ABC	
        	printf("======%s=====\n",__FILE__);
        #endif
        	printf("hello world");
        	return 0;	 
        }
        

      ​ gcc -D : gcc -DABC ===#define ABC

    • 发行版本

  3. 宏展开下#、 ##的使用

    • 在宏体中使用:

      • #:字符串化

        • #define ABC(x) #x
      • ‘##’ :连接符号

        • #define ABC(x) day##x

        • #include <stdio.h>
          #define ABC(x)   #x
          #define DAY(x)   myday##x
          
          int main(){
          	int myday1=10;
          	int myday2=12;
          
          	printf(ABC(ab\n));
          	printf("the day is %d\n",DAY(2));
          	return 0;
          }
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值