当前位置: 首页 > news >正文

c程序gcc编译常见报错及解决方法整理

目录

    • 一、简介
    • 二、常见报错及解决方法
      • 1、数组定义错误
      • 2、Not enough information to produce a SYMDEFs file
      • 3、文件乱码<U+0000>
      • 4、未定义或未申明报错
      • 5、代码中误加入中文
    • 三、其他相关链接

一、简介

本文主要是整理c程序编译过程的常见报错的解决方法,方便大家及时解决问题。

二、常见报错及解决方法

1、数组定义错误

../../Libs/cmd/cmd_reboot.c:29:69: error: excess elements in array initializer [-Werror]
unsigned long pmu_arr[3] ={ 0x082000a3, 0xf72000a2, 0x7f2190a2, 0xff };
                                                                    ^~~~
1 error generated.
common.mk:322: recipe for target 'obj_dir/cmd_reboot.o' failed

定义一个数组 a[n],说明该数组有n个元素,那么这个数组中元素最大的下标是 n–1;而元素 a[i] 表示数组 a 中第 i+1 个元素,数组修改为如下表示即可。

unsigned long pmu_arr[] = { 0x082000a3, 0xf72000a2, 0x7f2190a2, 0xff };
unsigned long pmu_arr[4] = { 0x082000a3, 0xf72000a2, 0x7f2190a2, 0xff };

2、Not enough information to produce a SYMDEFs file

"/tmp/aerY4D", line 73 (column 6): Warning: L6312W: Empty Execution region description for region _lu_data
Error: L6388E: ScatterAssert expression (ImageLimit(_guard) <= (0x880010000 + 0x70000 - (0x20 * 0x400))) failed on line 79 : (0x880078180 <= 0x880078000)
Not enough information to produce a SYMDEFs file.
Finished: 1 information, 1 warning and 1 error messages.

解决方法:
这种报错一般是每个工程目录下有个.sct文件指定的每个工程的内存空间大小,可以根据需要根据需要修改内存值,但是要注意不要跟其他空间重叠,具体定义示例如下。
在这里插入图片描述在这里插入图片描述

3、文件乱码<U+0000>

11-19 10:42:20.779 W   ../../Share/Lib/InfoPage.c:1161:7: error: null character ignored [-Werror,-Wnull-character]
11-19 10:42:20.779 W   <U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000>

出现这种方式主要是在linux和windows下交叉修改代码导致,Windows的默认编码为GBK,Linux的默认编码为UTF-8。
解决方法:设置程序编码方式
以source insight为例,单个文件乱码解决办法:
方法一:菜单栏中【File】 > 【Reload As Encoding…】 > 【Chinese Simplified (GB18030)】 > 选择后,点击load,问题解决!!!
方法二:可以直接将文件结尾部分多余的空行删掉即可。

所有文件乱码解决办法:
菜单栏中 【Options】 > 【Preferences】 >File标签中,最下面的“Default encod­ing” :改成System Default(Windows ANSI) 或者Chinese Simplified(GB2312) CP:936,点击确定,问题解决!!!

4、未定义或未申明报错

如果只声明函数而没有定义函数(函数的具体实现部分),那么就会直接报错:

Error: L6218E: Undefined symbol function“XXX” (referred from main.o)

如果没有声明,但是已经定义了函数,只是会出现警告:

Warning: #223-D: function “XXX” declared implicitly!

关于警告Warning:Implicit declaration of function “xxx” is invalid in C99!,说明函数已经定义,是函数的声明存在问题,检查以下几点:
1.函数的声明放在头文件(H文件);
2.函数定义在源文件(C文件);
3.函数的名称是否一致(大小写要一致);
4.声明被调用函数的头文件已经被包含(#include);
5.函数声明的先后顺序(被调用的函数声明放在执行调用函数的声明前面)。

5、代码中误加入中文

  if (r_scratch->s[16] ==PM_SP_FLAG ? TRUE : FALSE<U+FF09>
//出现<U+FF09>报错删除相应报错点代码即可。

三、其他相关链接

1、C语言常用函数详细总结

2、C语言中指针、数组作为作为函数参数使用总结

3、C语言常见数据类型字节数和打印格式总结

4、C语言、Makefile和shell中添加打印调试信息总结

5、c语言volatile关键字总结

相关文章:

  • SSH (Secure Shell)
  • 《蓝桥杯》30天拿下Python算法设计与分析【Day 11】
  • PyTorch初学者指南:数据预处理
  • Ribbon策略改变实现步骤(基于Eureka服务注册中心)
  • LeetCode和牛客网二叉树经典例题合集
  • C语言中的数组初始化常见方法
  • DT-6_TTL-WiFi透传模块介绍
  • 2023年网络安全比赛--JavaScript安全绕过中职组(超详细)
  • 最大油田(Python)
  • I.MX6ULL裸机开发笔记2:镜像文件
  • 基于EasyExcel实现百万级数据导入导出
  • C++初阶--模板
  • [Android]Bitmap Drawable
  • 【docker概念和实践 3】 注册阿里云账号、应用阿里云数据源
  • 手把手教你学51单片机-点亮你的LED
  • 华为数字化转型之道 平台篇 第十三章 变革治理体系
  • 23种设计模式(十)——原型模式【对象创建】
  • 数据挖掘之超参调优技巧
  • hids wazuh 系列3-内网扫描规则
  • (003) 简述UDP与TCP的区别