嵌入式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 
        //#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 
          #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;
          }
          

你可能感兴趣的:(嵌入式,c++,c语言)