C语言常见错误距离
1、预处理错误
-
not find 原因:
-
#include “name”
-
#include 尖括号只会在系统找,不会在当前目录找
解决方法:gcc - I跟查找头文件
-
-
编译错误:
- 语法错误 ; {}
-
链接错误: collect2: 链接器在报错
- 原材料不够 undefined reference to 'fun’
- 解决方法:
- 将函数内容补齐
- gcc
2、C语言预处理介绍
-
第一类:包含类
-
#include 包含头文件
-
#define 宏/替换 是不进行语法检查的
- #define 宏名(全部是大写字母) 宏体 加括号好习惯
#define ABC (5+3)
printf(“the %d\n”,ABC*5);
-
-
宏函数 #define ABC(x) (5+(x))
-
#ifdef #else #endif 条件编译
-
预定义宏 主要在调试中会使用
- FUNCTION 两边由两个下划线 :函数名
- _LINE:_行号
- FILE:文件名
-
条件预处理的应用
-
调试版本
-
#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
-
-
发行版本
-
-
宏展开下#、 ##的使用
-
在宏体中使用:
-
#:字符串化
- #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; }
-
-
-