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

合集下载

GCC常见错误解析

GCC常见错误解析

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语言常见编译错误提示

c语言常见编译错误提示

c语言常见编译错误提示1) error C2001: newline in constant编号:C2001直译:在常量中出现了换行。

错误分析:1.字符串常量、字符常量中是否有换行。

2.在这句语句中,某个字符串常量的尾部是否漏掉了双引号。

3.在这语句中,某个字符创常量中是否出现了双引号字符“"”,但是没有使用转义符“\"”。

4.在这句语句中,某个字符常量的尾部是否漏掉了单引号。

5.是否在某句语句的尾部,或语句的中间误输入了一个单引号或双引号。

2) error C2015: too many characters in constant编号:C2015直译:字符常量中的字符太多了。

错误分析:单引号表示字符型常量。

一般的,单引号中必须有且只能有一个字符(使用转义符时,转义符所表示的字符当作一个字符看待),如果单引号中的字符数多于4个,就会引发这个错误。

另外,如果语句中某个字符常量缺少右边的单引号,也会引发这个错误,例如:i f (x == 'x || x == 'y') { … }值得注意的是,如果单引号中的字符数是2-4个,编译不报错,输出结果是这几个字母的ASC码作为一个整数(int,4B)整体看待的数字。

3) error C2137: empty character constant编号:C2137直译:空的字符定义。

错误分析:原因是连用了两个单引号,而中间没有任何字符,这是不允许的。

4) error C2018: unknown character '0x##'编号:C2018直译:未知字符‘0x##’。

错误分析:0x##是字符ASC码的16进制表示法。

这里说的未知字符,通常是指全角符号、字母、数字,或者直接输入了汉字。

如果全角字符和汉字用双引号包含起来,则成为字符串常量的一部分,是不会引发这个错误的。

5) error C2041: illegal digit '#' for base '8'编号:C2141直译:在八进制中出现了非法的数字‘#’(这个数字#通常是8或者9)。

常见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的文件展开后,前一个文件的最后一行与后一个文件的第一行直接被连接成一行从而造成错误。

2、warning: comparison between pointer and integer解释:integer与pointer比较3、 warning: assignment discards qualifiers from pointer target type解释:赋值时,取消了右值的限定。

GCC警告选项例解

GCC警告选项例解

GCC警告选项例解程序员是追求完美的一族,即使是一般的程序员大多也都不想看到自己的程序中有甚至那么一点点的瑕疵。

遇到任意一条编译器警告都坚决不放过。

有人会说:我们可以使用比编译器更加严格的静态代码检查工具,如splint。

这个建议也很不错。

不过lint工具使用起来较繁琐,有时候还需要记住一些特定符号并插入到你自己的代码中才行,门槛较高,这也让很多人止步于此。

那么我们就从此放弃么?不,如今的编译器做得都很好,它可以帮助我们的找到绝大多数可能出现问题的代码,前提是你要学会控制编译器去找到这些问题代码,而熟悉编译器的警告选项恰恰是体现控制力的好方法。

当你可以自如控制编译器警告输出的时候,你就算是'入道'了,同时你对语言的理解也更进一步了。

有人说:我就是用一个-Wall选项就可以了,一般选手可以这么做,而且他可以不知道-Wall会跟踪哪些类型的问题;但是高级选手是不会只使用-Wall的,他会把每条警告都研究的很透彻,会在Makefile中列出他想让编译器输出哪些类型的警告以替代-Wall,他会屏蔽掉那些对他的代码'毫无用处'的警告(很可能他使用了编译器对语言的扩展功能),他会有个和编译器交流的过程。

俗话说:'工欲善其事,必先利其器',一直在工作中使用GNU C编译器(以下简称GCC),这里对GCC的一些警告选项细致的分析,并列举几个简单的例子[注1]供分析参考。

1. -Wall集合警告选项我们平时可能大多数情况只使用-Wall编译警告选项,实际上-Wall选项是一系列警告编译选项的集合。

下面逐一分析这一集合中的各个选项:[-Wchar-subscripts]如果数组使用char类型变量做为下标值的话,则发出警告。

因为在某些平台上char可能默认为signed char,一旦溢出,就可能导致某些意外的结果。

e.g./* test_signed_char.c */#includeint main () {char c = 255; // 我们以为char是无符号的,其范围应该是[0,255]int i = 0;int a[256];for (i = 0; i < 256; i++) {a[i] = 1;}printf("%d\n", c); // 我们期待输出255printf("%d\n", a[c]); // 我们期待输出1printf("%d\n", a[255]);return 0;}gcc -Wchar-subscripts test_signed_char.ctest_signed_char.c: In function `main':test_signed_char.c:13: warning: array subscript has type `char'其输出结果:-1-41974761从输出结果来看Solaris 9/gcc 3.2上char默认实现类型为signed char;在Windows XP/gcc-3.4.2上也是一样。

gcc警告手册

gcc警告手册

gcc警告手册GCC(GNU Compiler Collection)是一款开源的编译器,用于将源代码编译成可执行文件。

在使用GCC编译代码时,可能会遇到各种警告信息,这些警告信息可以帮助我们发现代码中的潜在问题。

下面是一个关于GCC警告信息的800字左右的说明手册:一、概述GCC在编译过程中会输出警告信息,这些信息通常用于指出代码中可能存在的问题,如未使用的变量、未初始化的变量、潜在的类型不匹配等。

正确理解和处理这些警告信息可以帮助我们提高代码质量,减少潜在的错误和缺陷。

二、常见警告类型1.未使用的变量:当一个变量在定义后从未被使用时,GCC会发出这种警告。

这可能是由于变量名拼写错误、逻辑错误或者变量定义多余。

2.未初始化的变量:当一个变量在使用前未被初始化时,GCC会发出这种警告。

未初始化的变量可能导致不确定的行为,因此应该避免使用未初始化的变量。

3.潜在的类型不匹配:当一个变量的类型与其被赋予的值不匹配时,GCC会发出这种警告。

这可能是由于类型转换错误、函数返回值类型不匹配等原因引起的。

4.函数未声明:当一个函数在调用前未被声明时,GCC 会发出这种警告。

应该确保所有调用的函数都已在调用前声明或定义。

5.数组越界:当数组下标越界时,GCC会发出这种警告。

这可能是由于数组下标计算错误或者逻辑错误引起的。

6.除以零:当一个整数被零除时,GCC会发出这种警告。

应该避免整数被零除的情况。

7.丢失符号:当链接器找不到某个符号(如函数或变量)的定义时,GCC会发出这种警告。

这可能是由于编译选项错误、遗漏了某个源文件等原因引起的。

三、处理警告的方法1.检查代码逻辑:对于未使用的变量和未初始化的变量等警告,需要检查代码逻辑是否正确,确保每个变量都有正确的用途和初始化。

2.类型转换:对于潜在的类型不匹配等警告,可以使用类型转换来确保数据类型匹配。

3.函数声明:对于函数未声明等警告,需要确保所有调用的函数都已在调用前声明或定义。

c语言常见编译错误提示

c语言常见编译错误提示

1) error C2001: newline in constant编号:C2001直译:在常量中出现了换行。

错误分析:1.字符串常量、字符常量中是否有换行。

2.在这句语句中,某个字符串常量的尾部是否漏掉了双引号。

3.在这语句中,某个字符创常量中是否出现了双引号字符“"”,但是没有使用转义符“\"”。

4.在这句语句中,某个字符常量的尾部是否漏掉了单引号。

5.是否在某句语句的尾部,或语句的中间误输入了一个单引号或双引号。

2) error C2015: too many characters in constant编号:C2015直译:字符常量中的字符太多了。

错误分析:单引号表示字符型常量。

一般的,单引号中必须有且只能有一个字符(使用转义符时,转义符所表示的字符当作一个字符看待),如果单引号中的字符数多于4个,就会引发这个错误。

另外,如果语句中某个字符常量缺少右边的单引号,也会引发这个错误,例如:if (x == 'x || x == 'y') { … }值得注意的是,如果单引号中的字符数是2-4个,编译不报错,输出结果是这几个字母的ASC码作为一个整数(int,4B)整体看待的数字。

3) error C2137: empty character constant编号:C2137直译:空的字符定义。

错误分析:原因是连用了两个单引号,而中间没有任何字符,这是不允许的。

4) error C2018: unknown character '0x##'编号:C2018直译:未知字符‘0x##’。

错误分析:0x##是字符ASC码的16进制表示法。

这里说的未知字符,通常是指全角符号、字母、数字,或者直接输入了汉字。

如果全角字符和汉字用双引号包含起来,则成为字符串常量的一部分,是不会引发这个错误的。

5) error C2041: illegal digit '#' for base '8'编号:C2141直译:在八进制中出现了非法的数字‘#’(这个数字#通常是8或者9)。

gcc报告解读 -回复

gcc报告解读 -回复

gcc报告解读-回复GCC(GNU C Compiler)是一种开源的C语言编译器,被广泛用于编译C语言程序。

本文将重点解读GCC编译器的报告,包括其生成的常见信息、报告的内容和作用,以及如何解读报告中的警告和错误信息。

一、报告的生成和常见信息1. 编译过程中,GCC编译器会生成一个报告,其中包含了编译过程的详细信息。

该报告通常保存在默认的文件名为“filename.gcc”的文件中。

2. 报告中包含了许多常见信息,例如编译器的版本、编译选项、目标平台等。

这些信息对于开发者来说非常重要,它们可以帮助开发者了解编译器的配置以及编译环境的设置。

3. 报告中还包含了生成的中间代码(Intermediate Code),这是编译过程中生成的一种类似于汇编语言的中间表示形式。

中间代码是将源代码转化为目标代码的过程中的一个中间步骤,它可以方便开发者进行调试和优化。

二、报告的内容和作用1. 报告中的内容主要包括三个部分:编译器的配置信息,源代码的统计信息和警告/错误信息。

2. 编译器的配置信息可以告诉开发者使用的编译器版本、编译选项和目标平台等相关信息,开发者可以根据这些信息对代码进行进一步的优化和调整。

3. 源代码的统计信息包括代码行数、函数个数、变量个数等。

这些统计信息可以帮助开发者了解代码的规模和复杂度,进而对代码进行优化和重构。

4. 警告/错误信息是报告中最重要的部分。

GCC编译器会对源代码进行静态分析,检测出潜在的问题,并生成相应的警告或错误信息。

开发者可以根据这些信息来修复代码中的问题,以保证程序的正确性和性能。

三、解读报告中的警告和错误信息1. 警告信息(Warnings)是指编译器对代码中的潜在问题发出的警告信号。

这些问题可能不会导致程序错误,但有可能会影响程序的正确性或性能。

需要注意的是,虽然警告信息并不是错误,但也不应该被忽略,开发者应该根据警告信息来进行代码修正,以避免潜在的问题。

2. 错误信息(Errors)是指编译器在编译过程中发现的无法继续编译的问题。

C语言编程时的错误提示(按字母顺序)

C语言编程时的错误提示(按字母顺序)

C语言编程时的错误提示(按字母顺序)Ambiguous operators need parentheses不明确的运算,需要用括号括起来Ambiguous symbol 'xxx'不明确的符号Argument list syntax error参数表语法错误Array bounds missing丢失数组界限符Array size too large数组尺寸太大Bad character in parameters参数中有不适当的字符Bad file name format in include directive包含命令中文件名格式不正确Bad ifdef directive syntax编译预处理ifdef有语法错误Bad ifndef directive syntax编译预处理ifndef有语法错误Bad undef directive syntax编译预处理undef有语法错误Call of non-function调用未定义的函数Call to function with no prototype调用函数时没有函数的说明Cannot modify a const object不允许修改常量对象Case outside of switchCase 出现在switch 之外Case statement missing漏掉了Case 语句Case syntax errorCase 语法错误Case outside of switchCase 出现在switch 之外Case statement missing漏掉了Case 语句Case syntax errorCase 语法错误Code has no effect代码不可能执行到Compound statement missing }复合语句漏掉了"}"Conflicting type modifiers不明确的类型说明符Constant expression required要求常量表达式Constant out of range in comparison 在比较中常量超出范围Conversion may lose significant digits 转换时会掉失有意义的数字Conversion of near pointer not allowed 不允许转换返指针Could not find file 'xxx'找不到xxx文件Declaration missing ;说明缺少分号";"Declaration syntax error说明中出现语法错误Default outside of switchdefault出现在switch语句之外Define directive needs an identifier 定义编译预处理需要标识符Division by zero用零作除数Do statement must have whiledo-while语句中缺少while部分Enum syntax error枚举类型语法错误Enumeration constant syntax error 枚举常数语法错误Error directive: xxx错误的编译预处理命令Error writing output file写输出文件错误Expression syntax error表达式语法错误Extra parameter in call调用时出现多余错误File name too long文件名太长Function call missing )函数调用缺少右括号Function definition out of place函数定义位置错误Function should return a value函数返回一个值Goto statement missing labelgoto 语句没有标号Hexadecimal or octal constant too large 16进制或8进制常数太大Illegal character 'x'非法字xIllegal initialization非法的初始化Illegal octal digit非法的8进制数字Illegal pointer subtraction非法的指针相减Illegal structure operation非法的结构体操作Illegal use of pointer指针使用非法Improper use of a typedef symbol类型符号定义使用不恰当In-line assembly not allowed不允许使用行间汇编Incompatible storage class存储类别不相容Incompatible type conversion不相容的类型转换Incorrect number format错误的数据格式Incorrect use of defaultdefault使用不正确Invalid indirection无效的间接运算Invalid pointer addition指针相加无效Irreducible expression tree无法执行的表达式运算Lvalur required需要逻辑值(0或非0值)Macro argument syntax error宏参数语法错误Macro expansion too long宏的扩展以后太长Mismatched number of parameters in definition 定义中参数个数不匹配Misplaced break此处不应出现break语句Misplaced continue此处不应出现continue语句Misplaced decimal point此处不应出现小数点Misplaced elif directive此处不应出现编译预处理elifMisplaced else此处不应出现elseMisplaced else directive此处不应出现编译预处理elseMisplaced endif directive此处不应出现编译预处理endifMust be addressable必须是可以编址的Must take address of memory location必须存储定位的地址No declaration for function 'xxx'没有函数xxx 的说明No stack缺少堆栈No type information没有类型信息Non-portable pointer assignment不可移动的指针(地址常数)赋值Non-portable pointer comparison不可移动的指针(地址常数)比较Non-portable pointer conversion不可移动的指针(地址常数)转换Not a valid expression format type不合法的表达式格式Not an allowed type不允许使用的类型Numeric constant too large数值常数太大Out of memory内存不够用Parameter 'xxx' is never used参数xxx 没有用到Pointer required on left side of -> -> 符号的左边必须是指针Possible use of 'xxx' before definition 在定义之前就使用了xxx(警告)Possibly incorrect assignment赋值可能不正确Redefinition of 'xxx' is not identicalxxx 的两次定义不一致Register allocation failure寄存器定址失败Repeat count needs an lvalue重复计数需要逻辑值Size of structure or array not known 结构体或数组的大小不确定Statement missing ;语句后缺少";"Structure or union syntax error结构体或联合体语法错误Structure size too large结构体的尺寸太大Subscripting missing ]下标缺少右方括号Superfluous &with function or array 函数或数组中有多余的"&"Suspicious pointer conversion可疑的指针转换Symbol limit exceeded符号超限Too few parameters in call函数调用时的实参少于函数的参数Too many error or warning messages 错误或警告信息太多Too much auto memory in function函数中用到的局部存储太多Too much global data defined in file 文件中全局数据太多Too consecutive dots两个连续的句点Type mismatch in parameter xxx参数xxx类型不匹配Type mismatch in redeclaration of 'xxx'xxx 重定义时的类型不匹配Unable to create output file 'xxx'无法建立输出文件xxxUnable to open include file 'xxx'无法打开被包容的文件xxxBit field too large位字段太长Unable to open input file 'xxx'无法打开输入文件xxxUndefined label 'xxx'没有定义的标号xxxUndefined structure 'xxx'没有定义的结构xxxUndefined symbol 'xxx'没有定义的符号xxxUnexpected end of file in comment started on line xxx 从xxx 行开始的注解尚未结束,文件不能结束Unexpected end of file in conditional started on line xxx 从xxx 行开始的条件语句尚未结束,文件不能结束Unknown assembler instruction未知的汇编结构Unknown option未知的操作Unknown preprocessor directive: 'xxx'不认识的预处理命令xxxUnreachable code无法到达的代码Unterminated string or character constant字符串缺少引号User break用户强行中断了程序Void functions may not return a valuevoid 类型的函数不应有返回值Wrong number off arguments调用函数时参数数目错'xxx' not an argumentxxx 不是参数'xxx' not part of structurexxx 不是结构体的一部分xxx statement missing (xxx 语句缺少左括号xxx statement missing )xxx 语句缺少右括号xxx statement missing ;xxx 语句缺少分号'xxx' declared but never used说明了xxx ,但没有使用'xxx' is assigned a value which is never used 给xxx 赋了值,但未用过Zero length structure结构体的长度为零。

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

g c c常见的编译警告与错误(按字母顺序排列)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: no t used because `%.*s’ not defined%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 中‘##’ c annot 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返回值。

"protocol_type" redefinedprotocol_type重定义anonymous variadic macros were introduced in C99匿名可变参数宏在 C99 中被引入assertion without predicate断言后没有谓词assertions are a deprecated extension断言是一个已过时的 GCC 扩展assertions are a GCC extension断言是一个 GCC 扩展assignment discards qualifiers from pointer target type 赋值时,取消了右值的限定。

assignment from incompatible pointer type不兼容的指针间赋值attempt to use poisoned \%s\试图使用有毒的“%s”backslash and newline separated by space反斜杠和换行为空格所分隔backslash-newline at end of file反斜杠续行出现在文件末尾binary constants are a GCC extension二进制常量是一个 GCC 扩展C++ style comments are not allowed in ISO C90C++ 风格的注释在 ISO C90 中不被允许cannot find source file %s找不到源文件 %sCharacter %x might not be NFKC字符 %x 可能不是 NFKCcharacter 0x%lx is not in the basic source character set\n 字符 0x%lx 不在基本源字符集中\ncharacter 0x%lx is not unibyte in execution character set 字符 0x%lx 在执行字符集中不是单字节的character constant too long for its type字符常量大小超出其类型comma operator in operand of #if#if 操作数中出现逗号comparison between pointer and integerinteger与pointer比较comparison is always false due to limited range of data type 由于数据类型范围的限制,比较结果一直为假comparison is always true due to limited range of data type 由于数据类型范围的限制,比较结果一直为真。

conversion from %s to %s not supported by iconviconv 不支持从 %s 到 %s 的转换converting escape sequence to execution character set将转义序列转换到执行字符集converting to execution character set转换到可执行文件的字符集converting UCN to execution character set将 UCN 转换到执行字符集converting UCN to source character set将 UCN 转换到源字符集could not determine date and time无法决定日期与时间could not determine file timestamp无法决定文件的时间戳CPP arithmetic must be at least as precise as a target intCPP 算术必须至少具有目标 int 的精度CPP half-integer narrower than CPP characterCPP 半整数短于 CPP 字符CPP on this host cannot handle wide character constants over %lu bits, but the target requires %lu bits在此宿主机上,CPP 不能处理长于 %lu 位的宽字符常量,但目标需要 %lu 位cppchar_t must be an unsigned typecppchar_t 必须是无符号型current file is older than %s当前文件早于 %sdecimal float constants are a GCC extension十进制浮点常量是一个 GCC 扩展detected recursion whilst expanding macro \%s\展开宏%s时检测到递归division by zero in #if#if 中用零做除数duplicate macro parameter \%s\重复的宏参数“%s”embedding a directive within macro arguments is not portable将一个指示嵌入宏参数中是不可移植的empty character constant空的字符常量empty filename in #%s#%s 中文件名为空expected expression before 'else'else之前无表达式exponent has no digits指数部分没有数字extra tokens at end of #%s directive#%s 指示的末尾有多余的标识符failure to convert %s to %s无法从 %s 转换到 %sfixed-point constants are a GCC extension定点常量是一个 GCC 扩展floating constant in preprocessor expression浮点常量出现在预处理表达式中function-like macro \%s\ must be used with arguments in traditional C 类似函数的宏“%s”在传统 C 中必须与参数一起使用hex escape sequence out of range16 进制转义序列越界hexadecimal floating constants require an exponent16 进制浮点常量需要指数部分identifier \%s\ is a special operator name in C++标识符“%s”是 C++ 中的一个特殊操作符imaginary constants are a GCC extension虚数常量是一个 GCC 扩展imaginary number in preprocessor expression预处理表达式中出现虚数impossible operator ‘%u’不可能的操作‘%u’In _cpp_valid_ucn but not a UCN在 _cpp_valid_ucn 中但不是一个 UCNincompatible implicit declaration of built-in function 'printf' 与内置的printf函数隐式声明不兼容。

相关文档
最新文档