GCC常见错误解析

合集下载

gcc_missing_field_initializers_概述说明

gcc_missing_field_initializers_概述说明

gcc missing field initializers 概述说明1. 引言1.1 概述在软件开发中,编译器的报错信息往往是我们解决问题的关键线索之一。

而当我们使用gcc编译器时,有时会遇到"missing field initializers"错误。

这种错误通常与结构体或类中缺少字段初始化器有关,即某些字段没有被正确地初始化。

本文就将围绕这个问题展开讨论,并提供相应的解决方法和实践指南。

1.2 文章结构本文将按照以下结构展开论述:- 引言:对文章主题进行概述说明以及文章结构介绍。

- 缺少字段初始化器问题:详细描述该问题的出现情境、原因分析以及解决方法。

- 影响与应用场景:探讨缺少字段初始化器问题可能带来的影响范围和适用场景,并提供相关注意事项。

- 示例与实践指南:通过示例代码解析来深入理解该问题,并给出实践指南和常见错误与解决方案。

- 结论:对全文进行总结,并提出心得及建议。

1.3 目的本文旨在帮助读者了解gcc编译器中"missing field initializers"错误的产生原因和解决方法,使读者能够正确地处理这一类型的编译错误。

通过本文的阅读,读者可以掌握如何查找并修复相关问题,并在实践中避免这类错误的发生。

以上就是文章“1. 引言”部分的详细内容。

2. 缺少字段初始化器问题:2.1 问题描述:缺少字段初始化器问题是一个在使用gcc编译器时经常遇到的错误。

这个错误通常指示在代码中存在未被正确初始化的结构体或对象的字段。

2.2 原因分析:缺少字段初始化器问题通常发生在以下情况下:- 在定义结构体或对象时,没有为所有字段提供初始化值。

- 初始化值的类型与字段的类型不匹配。

- 在给定的上下文中,某些特定字段必须进行初始化,但其被忽略了。

这些原因可能导致程序运行时出现未定义的行为、内存泄漏或其他意外结果。

2.3 解决方法:要解决缺少字段初始化器问题,可以采取以下步骤:- 确保为每个结构体或对象的字段提供适当的初始化值。

关于gcc中遇到的问题,这里有你想要的全部答案

关于gcc中遇到的问题,这里有你想要的全部答案

关于gcc中遇到的问题,这里有你想要的全部答案前言什么是 gcc[gcc 官方网站](/)GCC(GNU Compiler Collection,GNU编译器套件),是由GNU 开发的编程语言编译器。

它是以GPL(General Public License)许可证所发行的自由软件,也是GNU 计划的关键部分(GPU 是一个软件工程项目,是 GNU's Not Unix 的缩写)。

GCC 原本作为GNU 操作系统的官方编译器,现已被大多数类Unix 操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,GCC 同样适用于微软的Windows。

GCC 是自由软件过程发展中的著名例子,由自由软件基金会以 GPL 协议发布。

什么是 glibc[glibc 官方网站](/software/libc/)glibc 是 gnu 发布的 libc 库,即 c 运行库。

glibc 是 linux 系统中最底层的 api,几乎其他任何的运行库都会依赖 glibc. glibc 除了封装linux 操作系统所提供的系统服务外,它本身提供了许多其它一些必要服务的实现,主要有:•string:字符串处理•signal:信号处理•dlfcn:管理共享库的动态加载•direct:文件目录操作•elf:共享库的动态加载器,即 interpreter•iconv:不同字符集的编码转换•inet:socket 接口的实现•intl:gettext 的实现•io•linuxthreads•locale:本地化•login:虚拟终端设备的管理,及系统的安全访问•malloc:动态内存管理的分配与管理•nis•stdlib•mathgcc 和 glibc 的关系首先,gcc 是编译器,基本上 linux 下所有程序(包括内核)都是gcc 编译的,libc 也是。

但 gcc 和 libc 又是相互依赖的,什么意思呢?就是在编译 c/cpp 代码时,既需要 gcc,也需要 libc.gcc 发行版本截止2021年8月,最新版本已经到 gcc11.2 了。

gcc支付系统用户使用步骤简要和常见问题解答

gcc支付系统用户使用步骤简要和常见问题解答

GCC支付系统用户使用步骤简要和常见问题解答一、概述该系统为用户提供了丰富的支付功能和支付种类,它除了可以满足进出口企业用户在网上缴纳海关税款和行政事业性收费(以下简称海关税费)的需要,还可以方便用户向其他的口岸机构支付有关的通关费用。

同时,它还向用户提供了方便、快捷、高效的税费信息、帐单信息和报关单信息等的信息查询服务。

GCC支付系统可以支付的税费种类1、进口关税5、反倾销税9、增值税缓息13、滞纳金2、出口关税6、进口增值税 10、监管手续费 14、进口消费税3、特定关税7、关税缓息11、保证金4、特定增值税8、消费税缓息12、滞报金二、系统设备安装及环境要求●PC电脑:PII266以上,32M以上内存,有2G以上的有效空间●操作系统:Win2000、WinXp或Win98操作系统●浏览器:IE 6.0版本(最好为IE6.00.2600或IE6.00.2800)●网络:通过单位局域网、或通过调制解调器和可拨外线的电话线路连接互联网。

●其他:USB接口三、用户登陆及密码修改系统密码:系统初始密码123系统密码修改在用户登陆后,点击“修改密码”进行修改证书密码:初始密码为和卡对应的密码信封中的密码(注意大小写、数字和字母的区分)证书密码修改在用户登录页面上,点击“修改证书密码”就可按照提示输入,修改密码。

该证书密码连续输错7次,卡会被琐住,请在输入密码时,务必仔细。

若被锁,需来我们公司解锁。

四、操作步骤1. 下载驱动程序首先在网页的相关文档下载中下载IE客户端控件安装包。

然后检查系统是否已经装有错误的USB KEY驱动程序,如果有则需删除,否则就双击运行Z_Setup程序,最后再插入USB KEY(如果是98需要重新启动)。

2. 使用法人卡登录系统为操作员卡配置权限用户可以根据本企业的业务流程及实际使用需要,将修改权限与修改可操作帐号内的权限授给操作员卡。

法人卡不具备支付功能。

3. 使用操作员卡登陆进行税费单的支付根据报关单号进行支付点击进入“查询报关单”,输入报关单号码,查询到此票报关单,进行支付。

gcc常见的编译警告与错误(按字母顺序排列)

gcc常见的编译警告与错误(按字母顺序排列)

gcc 常见的编译警告与错误(按字母顺序排列)C语言初学者遇到的最大问题往往是看不懂编译错误,进而不知如何修改程序。

有鉴于此,本附录罗列了用gcc编译程序时经常出现的编译警告与错误。

需要提醒读者的是,出现警告(warning)并不影响目标程序的生成,但出现错误(error)则无法生成目标程序。

为便于读者查阅,下面列出了经常遇到的警告与错误,给出了中英文对照(英文按字典顺序排列),并对部分错误与警告做了必要的解释。

#%s expects \FILENAME\ or …#%s 需要 \FILENAME\ 或…#%s is a deprecated GCC extension#%s 是一个已过时的 GCC 扩展#%s is a GCC extension#%s 是一个 GCC 扩展#~ error:#~ 错误:#~ In file included from %s:%u#~ 在包含自 %s:%u 的文件中#~ internal error:#~ 内部错误:#~ no newline at end of file#~ 文件未以空白行结束#~ warning:#~ 警告:#elif after #else#elif 出现在 #else 后#elif without #if#elif 没有匹配的 #if#else after #else#else 出现在 #else 后#else without #if#else 没有匹配的 #if#endif without #if#endif 没有匹配的 #if#include nested too deeply#include 嵌套过深#include_next in primary source file#include_next 出现在主源文件中#pragma %s %s is already registered#pragma %s %s 已经被注册#pragma %s is already registered#pragma %s 已经被注册#pragma once in main file#pragma once 出现在主文件中#pragma system_header ignored outside include file#pragma system_heade 在包含文件外被忽略%.*s is not a valid universal character%.*s 不是一个有效的 Unicode 字符%s in preprocessing directive预处理指示中出现 %s%s is a block device%s 是一个块设备%s is shorter than expected%s 短于预期%s is too large%s 过大%s with no expression%s 后没有表达式%s: not used because `%.*s’ defined as `%s’ not `%.*s’ %s:未使用因为‘%.*s’被定义为‘%s’而非‘%*.s’%s: not used because `%.*s’ is poisoned%s:未使用因为‘%.*s’已被投毒%s: not used because `%.*s’ not def ined%s:未使用因为‘%.*s’未定义%s: not used because `%s’ is defined%s:未使用因为‘%s’已定义%s: not used because `__COUNTER__’ is invalid%s:未使用因为‘__COUNTER__’无效(\%s\ is an alternative token for \%s\ in C++)(在 C++ 中“%s”会是“%s”的替代标识符)(this will be reported only once per input file)(此警告为每个输入文件只报告一次)\%s\ after # is not a positive integer# 后的“%s”不是一个正整数\%s\ after #line is not a positive integer#line 后的“%s”不是一个正整数\%s\ cannot be used as a macro name as it is an operator in C++ “%s”不能被用作宏名,因为它是 C++ 中的一个操作符\%s\ is not a valid filename“%s”不是一个有效的文件名\%s\ is not defined“%s”未定义\%s\ may not appear in macro parameter list“%s不能出现在宏参数列表中\%s\ re-asserted重断言“%s”\%s\ redefined“%s重定义\/*\ within comment“/*出现在注释中\\x used with no following hex digits\\x 后没有 16 进制数字\defined\ cannot be used as a macro name“defined不能被用作宏名__COUNTER__ expanded inside directive with -fdirectives-only带 -fdirectives-only 时 __COUNTER__ 在指示中扩展__VA_ARGS__ can only appear in the expansion of a C99 variadic macro __VA_ARGS__ 只能出现在 C99 可变参数宏的展开中_Pragma takes a parenthesized string literal_Pragma 需要一个括起的字符串字面常量‘%.*s’ is not in NFC‘%.*s’不在 NFC 中‘%.*s’ is not in NFKC‘%.*s’不在 NFKC 中‘##’ cannot appear at either end of a macro expansion‘##’不能出现在宏展开的两端‘#’ is not followed by a macro parameter‘#’后没有宏参数‘$’ in identifier or number‘$’出现在标识符或数字中‘:’ without preceding ‘?’‘:’前没有‘?’‘?’ without following ‘:’‘?’后没有‘:’'return' with a value, in function returning void在void返回类型的函数中,return返回值。

C语言程序设计中的常见错误和解决

C语言程序设计中的常见错误和解决

C语言程序设计中的常见错误和解决在C语言程序设计中,很多初学者经常会遇到一些常见的错误。

这些错误可能是语法错误、逻辑错误或者是其他一些常见问题导致的。

本文将介绍一些经常出现的C语言程序设计错误,并提供相应的解决方法,帮助读者更好地理解和掌握C语言编程。

一、语法错误1. 括号未匹配括号未匹配是C语言中常见的语法错误之一。

在编写代码时,经常会使用到括号,如if语句、for循环等。

如果不小心忘记关闭某个括号,就会导致括号未匹配的错误。

解决方法:仔细检查代码中的括号是否匹配,并确保每个左括号都有相应的右括号。

2. 分号丢失分号丢失是C语言中另一个常见的语法错误。

在C语言中,分号用于分隔语句,如果遗漏了分号,编译器就无法识别出语句的结束。

解决方法:检查每一行语句的末尾,确保每个语句都以分号结尾。

3. 变量未声明在使用变量之前,必须先声明该变量。

如果没有先声明变量就直接使用,编译器将无法识别该变量,从而报错。

解决方法:在使用变量之前,先进行变量声明。

二、逻辑错误1. 循环控制条件错误在编写循环语句时,控制条件的错误是常见的逻辑错误。

如果循环的控制条件错误,循环可能无法正常结束或者根本无法执行。

解决方法:仔细检查循环的控制条件,确保条件符合预期,并在循环体内更新循环变量。

2. 数组越界访问在C语言中,数组的索引从0开始,通过索引访问数组元素时,如果索引超出了数组的范围,就会导致数组越界访问的错误。

解决方法:确保数组索引在正确的范围内,避免越界访问。

如果需要遍历数组,可以使用循环来控制数组的访问范围。

三、其他常见问题及解决方法1. 变量类型不匹配在赋值操作或者表达式计算时,如果不同类型的变量之间进行操作,则会导致变量类型不匹配的错误。

解决方法:确保操作的变量类型相同或者进行强制类型转换,以保证变量类型的匹配。

2. 内存泄漏在C语言中,手动分配内存的操作是常见的。

如果分配了内存空间,但在使用完毕后未及时释放,就会导致内存泄漏。

常见gcc编译警告整理以及解决方法【收藏】

常见gcc编译警告整理以及解决方法【收藏】

常见gcc编译警告整理以及解决方法【收藏】
1、warning: no newline at end of file
 在文件最后一行加上回车键
 解释:在《Rationale for the C99 standard》一文中,有C99的相关信息:
 A backslash immediately before a newline has long been used to continue string literals, as well as preprocessing command lines. In the interest of easing machine generation of C, and of transporting code to machines with restrictive physical line lengths, the C89 Committee generalized this mechanism to permit any token to be continued by interposing a backslash/newline sequence.
 c/c++代码的每一行后面有一个结束符,也就是newline。

避免当被include
的文件展开后,前一个文件的最后一行与后一个文件的第一行直接被连接成一行从而造成错误。

 2、warning: comparison between pointer and integer
 解释:integer与pointer比较
 3、warning: assignment discards qualifiers from pointer target type。

常见gcc编译问题解决方法集

常见gcc编译问题解决方法集

常见gcc编译问题解决⽅法集除⾮明确说明,本⽂内容仅针对x86/x86_64的Linux开发环境,有朋友说baidu不到,开个贴记录⼀下(加粗字体是关键词):⽤“-Wl,-Bstatic”指定链接静态库,使⽤“-Wl,-Bdynamic”指定链接共享库,使⽤⽰例:-Wl,-Bstatic -lmysqlclient_r -lssl -lcrypto -Wl,-Bdynamic -lrt -Wl,-Bdynamic -pthread -Wl,-Bstatic -lgtest ("-Wl"表⽰是传递给链接器ld的参数,⽽不是编译器gcc/g++的参数。

)1) 下⾯是因为没有指定链接参数-lz(/usr/lib/libz.so,/usr/lib/libz.a )/usr/local/mysql/lib/mysql/libmysqlclient.a(my_compress.c.o): In function `my_uncompress':/home/software/mysql-5.5.24/mysys/my_compress.c:122: undefined reference to `uncompress'/usr/local/mysql/lib/mysql/libmysqlclient.a(my_compress.c.o): In function `my_compress_alloc':/home/software/mysql-5.5.24/mysys/my_compress.c:71: undefined reference to `compress'2) 下⾯是因为没有指定编译链接参数-pthread(注意不仅仅是-lpthraed)/usr/local/mysql/lib/mysql/libmysqlclient.a(charset.c.o): In function `get_charset_name':/home/zhangsan/mysql-5.5.24/mysys/charset.c:533: undefined reference to `pthread_once'3) 下⾯这个是因为没有指定链接参数-lrt/usr/local/thirdparty/curl/lib/libcurl.a(libcurl_la-timeval.o): In function `curlx_tvnow':timeval.c:(.text+0xe9): undefined reference to `clock_gettime'4) 下⾯这个是因为没有指定链接参数-ldl/usr/local/thirdparty/openssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':dso_dlfcn.c:(.text+0x4c): undefined reference to `dlopen'dso_dlfcn.c:(.text+0x62): undefined reference to `dlsym'dso_dlfcn.c:(.text+0x6c): undefined reference to `dlclose'5) 下⾯这个是因为指定了链接参数-static,它的存在,要求链接的必须是静态库,⽽不能是共享库ld: attempted static link of dynamic object如果是以-L加-l⽅式指定,则⽬录下必须有.a⽂件存在,否则会报-l的库⽂件找不到:ld: cannot find -lACE6) GCC编译遇到如下的错误,可能是因为在编译时没有指定-fPIC,记住:-fPIC即是编译参数,也是链接参数relocation R_x86_64_32S against `vtable for CMyClass` can not be used when making a shared object7) 下⾯的错误表⽰gcc编译时需要定义宏__STDC_FORMAT_MACROS,并且必须包含头⽂件inttypes.htest.cpp:35: error: expected `)' before 'PRIu64'8) 下⾯是因为在x86机器(32位)上编译没有指定编译参数-march=pentium4../../src/common/libmooon.a(logger.o): In function `atomic_dec_and_test':../../include/mooon/sys/atomic_gcc.h:103: undefined reference to `__sync_sub_and_fetch_4'9) 下列错误可能是因为多了个“}”error: expected declaration before '}' token10) 下列错误可能是因为少了个“}”error: expected `}' at end of input11) 下⾯这个错误是编译⼀个共享库时,该共享库依赖的⼀静态库编译时没有加“-fPIC”参数,解决⽅法为带“-fPIC”重新编译被依赖的静态库relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC12) 下⾯这个错误,是因为头⽂件中使⽤“_syscall0(pid_t, gettid)”不当引起的./test.o: In function `gettid()':./test.h:17: multiple definition of `gettid()'正确的⽤法是使⽤"inline"或"static inline"修饰⼀下:inline _syscall0(pid_t, gettid)或static inline _syscall0(pid_t, gettid)当然也可以这样:在.h头⽂件中:extern "C" pid_t gettid(void);在.cpp⽂件中:_syscall0(pid_t, gettid)_syscall0是⼀个宏,定义⼀个函数的实现。

常见gcc 编译错误整理

常见gcc 编译错误整理

常见gcc 编译错误整理常见gcc 编译错误整理(开始) 11 error: expected expression before 'else' else之前无表达式。

2 error: lvalue required as left operand of assignment 左值问题。

3 error: invalid storage class for function 'XXXXXX' 在文件的某个地方,丢失了一个大括号‘}’。

常见gcc编译警告整理(开始)1、warning: no newline at end of file 在文件最后一行加上回车键解释:在《Rationale for the C99 standard》一文中,有C99的相关信息:A backslash immediately before a newline has long been used to continue string literals, as well as preprocessing command lines. In the interest of easing machine generation of C, and of transporting code to machines with restrictive physical line lengths, the C89 Committee generalized this mechanism to permit any token to be continued by interposing abackslash/newline sequence.c/c++代码的每一行后面有一个“结束符”,也就是newline。

避免当被include的文件展开后,前一个文件的最后一行与后一个文件的第一行直接被连接成一行从而造成错误。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

GCC常见错误解析一、错误类型第一类∶C语法错误错误信息∶文件source.c中第n行有语法错误(syntex errror)。

这种类型的错误,一般都是C语言的语法错误,应该仔细检查源代码文件中第n行及该行之前的程序,有时也需要对该文件所包含的头文件进行检查。

有些情况下,一个很简单的语法错误,gcc会给出一大堆错误,此时要保持清醒的头脑,不要被其吓倒,必要的时候再参考一下C语言的基本教材。

第二类∶头文件错误错误信息∶找不到头文件head.h(Can not find include file head.h)。

这类错误是源代码文件中的包含头文件有问题,可能的原因有头文件名错误、指定的头文件所在目录名错误等,也可能是错误地使用了双引号和尖括号。

第三类∶档案库错误错误信息∶连接程序找不到所需的函数库,例如∶ld: -lm: No such file or directory.这类错误是与目标文件相连接的函数库有错误,可能的原因是函数库名错误、指定的函数库所在目录名称错误等,检查的方法是使用find命令在可能的目录中寻找相应的函数库名,确定档案库及目录的名称并修改程序中及编译选项中的名称。

第四类∶未定义符号错误信息∶有未定义的符号(Undefined symbol)。

这类错误是在连接过程中出现的,可能有两种原因∶一是使用者自己定义的函数或者全局变量所在源代码文件,没有被编译、连接,或者干脆还没有定义,这需要使用者根据实际情况修改源程序,给出全局变量或者函数的定义体;二是未定义的符号是一个标准的库函数,在源程序中使用了该库函数,而连接过程中还没有给定相应的函数库的名称,或者是该档案库的目录名称有问题,这时需要使用档案库维护命令ar检查我们需要的库函数到底位于哪一个函数库中,确定之后,修改gcc 连接选项中的-l和-L项。

排除编译、连接过程中的错误,应该说这只是程序设计中最简单、最基本的一个步骤,可以说只是开了个头。

这个过程中的错误,只是我们在使用C语言描述一个算法中所产生的错误,是比较容易排除的。

我们写一个程序,到编译、连接通过为止,应该说刚刚开始,程序在运行过程中所出现的问题,是算法设计有问题,说得更玄点是对问题的认识和理解不够,还需要更加深入地测试、调试和修改。

一个程序,稍为复杂的程序,往往要经过多次的编译、连接和测试、修改。

二、常见错误信息解析与处理11、预处理时的错误信息No such file or directory中文含义:没有相应文件或目录错误原因:编译器的搜索路径上找不到所需要的文件。

该文件可能已在命令行中指定,或在 #include 语句中说明。

处理方法:查看文件名是否正确,或文件所存放的目录是否已添加到系统目录或链接目录中。

以下是样例:#include <stdoi.h> /* 错误:文件名不正确 */int main (void){printf ("Hello World!\n");return 0;}上面的程序试图引入一个不存在的文件‘stdoi.h’ ,这就会引发如下错误:‘stdoi.h: No such file or directory’。

而正确的文件名应该是‘stdio.h’。

macro or '#include' recursion too deep中文含义:宏或'#include'递归太深错误原因:语句 #include 嵌套太深。

当预处理器遇到太多嵌套的 #include 指令时,会导致此错误。

通常该错误由两个或多个文件进行相互引用时,会引发无限递归。

如:/* foo.h */#include "bar.h".../* bar.h */#include "foo.h"...解决方法是确保各文件没有互相引用。

invalid preprocessing directive #...中文含义:非法的预处理命令#...错误原因:该错误指明预处理器遇到了不可识别的 # 命令。

如:#if FOOint x = 1;#elseif BAR /* 应写成 #elif */int x = 2;#elseint x = 3;#endif预处理器语法在 #if 块中需要 #elif 而不是 "else if" 条件,也不是#elseif。

warning: This file includes at least one deprecated or2antiquated header.中文含义:警告:文件中至少引用了一个已废弃的或过时的头文件错误原因:该错误通常是在C++程序中引用了旧式的头文件库,如’iostream.h’, 在现代C++库头文件没有’.h’扩展名。

旧头文件导入其函数到顶层全局名字空间,对C++需要使用std:: 名字空间。

当然,对旧式风格的头文件仍然支持,所以对现有程序会继续编译,只是给出警告。

如:#include <iostream.h> /* 旧式风格 */int main (void){cout << "Hello World!\n";return 0;}‘iostream.h’应改写为 #include <iostream> 及 std::cout 。

unterminated '#if' conditional中文含义:'#if' 语句条件没有终止错误原因:缺少 #endif 语句2、编译时的错误信息'variable' undeclared (first use in this function)中文含义:变量'variable' 没有声明(第一次使用此变量)解决方法:在使用前声明该变量。

解析:在C和C++中,变量必须先声明后使用。

如:int main (void){int i;j = 0; /* j变量没声明 */return j;}此例中,j是没经声明的变量,所以将触发错误:'j' undeclared.parse error before '...'中文含义:在 'XXX' 语句前解析错误错误原因:语法错误解析:通常是编译器遇到了未期望的输入。

如:不合语法的字符串序列。

此错误也可能因为丢失花括号、园括号或分号,或写了非法的保留字而引发。

#include <stdio.h>int main (void){3printf ("Hello ") /* 丢失分号 */printf ("World!\n");return 0;}conflicting types for 'Alex'中文含义:对 'Alex' 变量存在突出类型错误原因:前面可能已对 'Alex' 声明了其它数据类型。

例如:存在两条语句分别声明了两次'Alex'变量为两种枚举 (enum) 类型。

two or more data types in declaration specifiers中文含义:在声明标识符中存在多种数据类型最容易出现这样的错误,原因是在程序里少了个“;”号。

有可能在头文件里,也有可能在本文件中(最容易出错的是在结构体中忘了“;”)。

too many types in declaration中文含义:在声明中定义太多的类型1.是否多次包含着个头文件?检查一下例如:#ifndef TConfigH#define TConfigH#endif //是否少了这个2.看下将长语句分为多行时,与下一行语句间是否少了逻辑运算符关系,关系运算符之类的符号warning: comparison between pointer and integer中文含义:警告:对指针和整型值进行比较可能没问题。

此警告通常是由'if (strstr(line,"word") != NULL )' 之类的strstr 函数返回指针或空值。

subscripted value is neither array nor pointer中文含义:下标值不符合数组或指针要求错误原因:企图使用可变的变量作为下标floppyto.c:782: parse error at end of input中文含义:在文件尾部解析错误floppyto.c 是程序文件名, 782 是错误行数,但该数字大于文件长度。

错误原因:存在没配对的花括号{}或注解 /* */#include <stdio.h>int main (void) {if (1) {4printf ("Hello World!\n");return 0; /* 花括号不匹配 */}parse error before 'printf'中文含义:在'printf' 之前解析错误错误原因:在该语句之前缺少分号 ';'warning: implicit declaration of function '...'中文含义:警告:与函数 XXX 的隐式声明不相符错误原因:该错误是因为使用的函数没有原型声明而产生。

产生的因为可以是导入错误的头文件,或忘记提供函数原型。

如:int main (void){printf ("Hello World!\n"); /* 没有头文件 */return 0;}程序中没有导入系统头文件’stdio.h’,所以也就不存在 printf 的原型声明。

改正方法:在程序最前面加入一行语句: #include <stdio.h>。

unterminated string or character constant中文含义:未终止的字符串或字符常量错误原因:该错误是因为使用字符串或字符常量缺少配对的引号而产生。

对字符而言,应使用成对的单引号,而对字符串,应使用成对的双引号。

#include <stdio.h>int main (void){printf ("Hello World!\n); /* 缺少闭双引号*/return 0;}character constant too long中文含义:字符常量太长错误原因:在C和C++中,字符常量是由单引号封装起来的单个字符,并且有相应的ASCII值。

如 'a' 对应的ASCII为67, 而 '\n' 对应的ASCII 为10。

相关文档
最新文档