CCS编译器常见错误及解决

本文详细介绍了C语言代码的编译流程,包括预处理、编译和汇编、链接三个阶段,并针对CCS编译器常见的错误类型提供了解决方案。对于头文件未找到的问题,可以通过配置工程属性添加头文件搜索路径;符号未定义的错误通常在链接阶段出现,需要确保所有函数定义都在链接输入中;如果缺少源文件,需要手动添加到工程。理解这些错误和解决方法对于优化代码编译过程至关重要。
摘要由CSDN通过智能技术生成

1.理解C语言代码编译流程

预处理

  预处理处理宏定义和头文件,源文件中包含的头文件会在源文件里展开。源文件主要是需要头文件中的外部变量和函数的声明,这样源文件在后面的链接时才知道需要去库文件或者外部的目标文件中寻找。编译器会进行优化,如果源文件中没有用到的变量和函数声明生成目标文件的时候是没有的,所以包含多个头文件是不影响文件大小的。所以这里报错的话一般是头文件找不到导致include无法展开出现了等错误。

编译和汇编

  C语言的源文件被编译成汇编文件,汇编文件在生成二进制文件,这个过程一般没有C语言语法错误是不会报错的。

链接

  编译和汇编完成后的多个目标文件链接成最后的obj文件,然后这个obj文件会被下载到单片机的flash中。这个过程经常出现的错误是符号未定义,例如utils.c中定义了func()函数,main.c中include了utils.h并且调用了func()函数,但是如果链接的时候没有链接这个utils.c函数,那么链接器在当前所有的目标文件的符号表中都无法找到这个func()的定义位置,那么链接器就会报错。

2.常见编译错误

头文件未找到

在这里插入图片描述
  配置工程属性,在ARM Compiler–>include Options选项的Add dir #include search path中添加头文件查找的路径。

符号未定义

  包含了头文件只是包含了外部函数的声明,在预处理和编译、汇编阶段不会报错,但是在链接时会出现符号未定义的错误,因为没有找到函数的定义。
在这里插入图片描述
  配置工程属性,在ARM Linker–>File Search Path选项的Include library file or command file as input中添加单个库文件的路径及路径名。也可以在Include library file or command file as input直接添加库的名字,然后在下面的Add dir to library search path中添加库文件的路径

添加源文件

  有些代码是没有被编译进库文件中的,例如uartstdio.c,需要手动添加这个源文件。不是在文件夹中将这个文件拷贝到文件目录,而是要在工程选项中使用Add Files,这个编译器才知道要将哪些源文件编译成一个可执行文件。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值