精华内容
下载资源
问答
  • C语言常见编译错误分类及其解决方案

    千次阅读 多人点赞 2019-10-19 22:31:39
    文章目录绪论第一安装错误:[1]Error spawning cl.exe[2]fatal error C1083: Cannot open include file:第二打开编译器失败,提示不能打开第三cannot execute program解决方案第四连接Link.exe错误解决方案第五 ...

    文章目录

    绪论

         经过两三次实验,相信大家上机都发现自己出bug的情况了吧,今天学长就把bug汇总一下,这篇文章会慢慢完善,学长根据自己的经验进行汇总直到把大部分bug收集起来,这些都是学长自己做的,没有照搬网上的,因为很多网上没有或是并不好理解,希望老师同学支持哈。

    首先我们来分类一下几种常见错误

    1. 逻辑错误
    2. 语法错误
    3. 链接错误
    4. 编译错误
    5. 安装错误

    第一安装错误:


    [1]Error spawning cl.exe

    [2]fatal error C1083: Cannot open include file:

    在这里插入图片描述
    以上两种错误情况是一样的,头文件没有放到安装目录下,都是你在安装的时候路径选择错了,怎么解决呢?重新安装??这不能解决问题的!!!
    解决方案:
    在这里插入图片描述
    在这里插入图片描述
    我们首先点击可执行文件,然后在路径区将前四个路径分别做如下修改,和我下边的地址设置成一样!!如果你的前四个文件路径和我下边的不一样,那你就双击一下,修改地址即可。
    在这里插入图片描述
    双击之后点击那三个点就可以选择文件路径了!!
    在这里插入图片描述
    接下来目录选择头文件include区域!和上一步操作一样,把路径地址换成我下面的路径,记住如果这两你多余四行,那你就删除,删到只剩三行即可。
    在这里插入图片描述
    接下来选择目录如下,同时修改前两行地址,和下边的地址要一样,多余行数删除处理!
    在这里插入图片描述
    最后一步,选择另外一个目录,换掉前三行地址,和如下地址要一样!!
    在这里插入图片描述
    做完如上操作之后点击确定在进行编译,问题就解决了,如果没有解决那就是你的某个目录下的文件没有按照我的地址来配对,再检查一下就行了!

    第二打开编译器失败,提示不能打开

    在这里插入图片描述
    这个问题的其实很简单的。解决方案:

    1. 点击进入---->下载该解压器
    2. 安装好之后,观察压缩包变成360zip之后就可以直接打开了!
      在这里插入图片描述

    第三cannot execute program解决方案

    在这里插入图片描述
    问题导致原因:
    你添加的工程名字和文件名字不一致
    在这里插入图片描述
    解决方案:
    首先建好项目名字,在建你的C++source时,记得名字一定要一样!!!还有不能用中文名字!!
    在这里插入图片描述
    在这里插入图片描述

    第四连接Link.exe错误解决方案

    错误原因:
    一个项目建了多个工程文件,且名字不对应,与第三错误类似

    在这里插入图片描述
    解决方案:重新新建一个项目,再建一个工程文件,记得名字要一样!!

    第五 error C2143: syntax error : missing ‘)’ before 'return’解决方案

    当发现这个语句的时候发现只要我们对应去找提示错误的语句就可以了,把失去的分号去掉就可以了!!!

    在这里插入图片描述
    可是我们发现,提示的语句是有分号的!!!
    在这里插入图片描述
    这个时候我们要去该语句的上一句或是下一句去寻找分号是否有缺失,双引号也是我们排查的目标!!!
    在这里插入图片描述
    我们发现其实上一个语句缺了分号
    在这里插入图片描述
    这个错误是很多人都容易忽略的,也是不容易看出来的,但一定要有这个思路!!

    第六涉及scanf输出结果为空的错误解决方案

    我们在输入一个值后输出缺为空!!
    在这里插入图片描述
    排查错误步骤:

    1. 输入语句格式【忘了地址符&】
    2. 输出语句格式【忘了逗号】
    3. 变量定义数据类型【数据类型不匹配】
      在这里插入图片描述
      加上地址符&之后就OK了

    第七

    error C2065: ‘a’ : undeclared identifier

    error C2109: subscript requires array or pointer type

    error C2102: ‘&’ requires l-value


    在这里插入图片描述
    分析:凡是发现连带错误的时候,都要自顶向下的检查拍错!看代码的时候也是自顶向下进行排查!
    错误解决方案:
    把for循环后边的分号去掉!!
    在这里插入图片描述
    你只要记住,也就是循环,选择结构的都不要再后边加分号。forif不要再后边加分号。

    第八

    error C2018: unknown character ‘0xa3’

    error C2018: unknown character ‘0xac’

    我相信这个错误大家已经见得司空见惯了吧!!!是不是一脸懵逼???
    解决方案:
    检查标点符号!检查标点符号!检查标点符号!

    注意你的标点符号,有一个地方的标点用成了中文!!!
    发现句子外边的分号正常那就看中间句子的空格间隙是不是特别大,如果大,那就说明符号有问题!!
    在这里插入图片描述

    第九

    fatal error C1083: Cannot open include file: ‘stduio.h’: No such file or directory

    这个是不是特别眼熟??
    解决方案
    观察头文件,你的头文件拼错了!!!
    你们顺手就喜欢打一个u在上面,正确头文件:<stdio.h>
    在这里插入图片描述


    文字说明

    cannot open Debug/lalal.exe for writng executing link.exe.

    在这里插入图片描述
    解决方案:
    在这里插入图片描述

    fatal error C1003: error count exceeds number; stopping compilation

    中文对照:(编译错误)错误太多,停止编译
    分析:修改之前的错误,再次编译

    fatal error C1004: unexpected end of file found

    中文对照:(编译错误)文件未结束
    分析:一个函数或者一个结构定义缺少“}”、或者在一个函数调用或表达式中括号没有配对出现、或者注释符“/„/”不完整等

    fatal error C1083: Cannot open include file: ‘xxx’: No such file or directory

    中文对照:(编译错误)无法打开头文件xxx:没有这个文件或路径
    分析:头文件不存在、或者头文件拼写错误、或者文件为只读

    fatal error C1903: unable to recover from previous error(s); stopping compilation

    中文对照:(编译错误)无法从之前的错误中恢复,停止编译
    分析:引起错误的原因很多,建议先修改之前的错误

    error C2001: newline in constant

    中文对照:(编译错误)常量中创建新行
    分析:字符串常量多行书写

    error C2006: #include expected a filename, found ‘identifier’

    中文对照:(编译错误)#include命令中需要文件名
    分析:一般是头文件未用一对双引号或尖括号括起来,例如“#include stdio.h”

    error C2007: #define syntax

    中文对照:(编译错误)#define语法错误
    分析:例如“#define”后缺少宏名,例如“#define”

    error C2008: ‘xxx’ : unexpected in macro definition

    中文对照:(编译错误)宏定义时出现了意外的xxx
    分析:宏定义时宏名与替换串之间应有空格,例如“#define TRUE”1””

    error C2009: reuse of macro formal ‘identifier’

    中文对照:(编译错误)带参宏的形式参数重复使用
    分析:宏定义如有参数不能重名,例如“#define s(a,a) (a*a)”中参数a重复

    error C2010: ‘character’ : unexpected in macro formal parameter list

    中文对照:(编译错误)带参宏的形式参数表中出现未知字符
    分析:例如“#define s(r|) r*r”中参数多了一个字符‘|’

    error C2014: preprocessor command must start as first nonwhite space

    中文对照:(编译错误)预处理命令前面只允许空格
    分析:每一条预处理命令都应独占一行,不应出现其他非空格字符

    error C2015: too many characters in constant

    中文对照:(编译错误)常量中包含多个字符
    分析:字符型常量的单引号中只能有一个字符,或是以“\”开始的一个转义字符,例如“char error = ‘error’;”

    error C2017: illegal escape sequence

    中文对照:(编译错误)转义字符非法
    分析:一般是转义字符位于 ’ ’ 或 ” ” 之外,例如“char error = ’ ‘\n;”

    error C2018: unknown character ‘0xhh’

    中文对照:(编译错误)未知的字符0xhh
    分析:一般是输入了中文标点符号,例如“char error = ‘E’;”中“;”为中文标点符号

    error C2019: expected preprocessor directive, found ‘character’

    中文对照:(编译错误)期待预处理命令,但有无效字符
    分析:一般是预处理命令的#号后误输入其他无效字符,例如“#!define TRUE 1”

    error C2021: expected exponent value, not ‘character’

    中文对照:(编译错误)期待指数值,不能是字符
    分析:一般是浮点数的指数表示形式有误,例如123.456E

    error C2039: ‘identifier1’ : is not a member of ‘identifier2’

    中文对照:(编译错误)标识符1不是标识符2的成员
    分析:程序错误地调用或引用结构体、共用体、类的成员

    error C2041: illegal digit ‘x’ for base ‘n’

    中文对照:(编译错误)对于n进制来说数字x非法
    分析:一般是八进制或十六进制数表示错误,例如“int i = 081;”语句中数字‘8’不是八进制的基数

    error C2048: more than one default

    中文对照:(编译错误)default语句多于一个
    分析:switch语句中只能有一个default,删去多余的default

    error C2050: switch expression not integral

    中文对照:(编译错误)switch表达式不是整型的
    分析:switch表达式必须是整型(或字符型),例如“switch (“a”)”中表达式为字符串,这是非法的

    error C2051: case expression not constant

    中文对照:(编译错误)case表达式不是常量
    分析:case表达式应为常量表达式,例如“case “a””中“”a””为字符串,这是非法的

    error C2052: ‘type’ : illegal type for case expression

    中文对照:(编译错误)case表达式类型非法
    分析:case表达式必须是一个整型常量(包括字符型)

    error C2057: expected constant expression

    中文对照:(编译错误)期待常量表达式
    分析:一般是定义数组时数组长度为变量,例如“int n=10; int a[n];”中n为变量,这是非法的

    error C2058: constant expression is not integral

    中文对照:(编译错误)常量表达式不是整数
    分析:一般是定义数组时数组长度不是整型常量

    error C2059: syntax error : ‘xxx’

    中文对照:(编译错误)‘xxx’语法错误
    分析:引起错误的原因很多,可能多加或少加了符号xxx

    error C2064: term does not evaluate to a function

    中文对照:(编译错误)无法识别函数语言
    分析:(1)函数参数有误,表达式可能不正确,例如“sqrt(s(s-a)(s-b)(s-c));”中表达式不正确(2)变量与函数重名或该标识符不是函数,例如“int i,j; j=i();”中i不是函数

    error C2065: ‘xxx’ : undeclared identifier

    中文对照:(编译错误)未定义的标识符xxx
    分析:(1)如果xxx为cout、cin、scanf、printf、sqrt等,则程序中包含头文件有误(2)未定义变量、数组、函数原型等,注意拼写错误或区分大小写

    error C2078: too many initializers

    中文对照:(编译错误)初始值过多
    分析:一般是数组初始化时初始值的个数大于数组长度,例如“int b[2]={1,2,3};”

    error C2082: redefinition of formal parameter ‘xxx’

    中文对照:(编译错误)重复定义形式参数xxx
    分析:函数首部中的形式参数不能在函数体中再次被定义

    error C2084: function ‘xxx’ already has a body

    中文对照:(编译错误)已定义函数xxx
    分析:在VC++早期版本中函数不能重名,6.0版本中支持函数的重载,函数名可以相同但参数不一样

    error C2086: ‘xxx’ : redefinition

    中文对照:(编译错误)标识符xxx重定义
    分析:变量名、数组名重名

    error C2087: ‘’ : missing subscript

    中文对照:(编译错误)下标未知
    分析:一般是定义二维数组时未指定第二维的长度,例如“int a[3][];”

    error C2100: illegal indirection

    中文对照:(编译错误)非法的间接访问运算符“
    分析:对非指针变量使用“
    ”运算

    error C2105: ‘operator’ needs l-value

    中文对照:(编译错误)操作符需要左值
    分析:例如“(a+b)++;”语句,“++”运算符无效

    error C2296: ‘%’ : illegal, left operand has type ‘float’ error C2297: ‘%’ : illegal, right operand has type ‘float’

    中文对照:(编译错误)%运算的左(右)操作数类型为float,这是非法的 
    分析:求余运算的对象必须均为int类型,应正确定义变量类型或使用强制类型转换

    error C2371: ‘xxx’ : redefinition; different basic types

    中文对照:(编译错误)标识符xxx重定义;基类型不同
    分析:定义变量、数组等时重名

    error C2440: ‘=’ : cannot convert from ‘char [2]’ to ‘char’

    中文对照:(编译错误)赋值运算,无法从字符数组转换为字符
    分析:不能用字符串或字符数组对字符型数据赋值,更一般的情况,类型无法转换

    error C2447: missing function header (old-style formal list?) error C2448: ‘’ : function-style initializer appears to be a function definition

    中文对照:(编译错误)缺少函数标题(是否是老式的形式表?) 
    分析:函数定义不正确,函数首部的“( )”后多了分号或者采用了老式的C语言的形参表

    error C2450: switch expression of type ‘xxx’ is illegal

    中文对照:(编译错误)switch表达式为非法的xxx类型
    分析:switch表达式类型应为int或char

    error C2466: cannot allocate an array of constant size 0

    中文对照:(编译错误)不能分配长度为0的数组
    分析:一般是定义数组时数组长度为0

    error C2601: ‘xxx’ : local function definitions are illegal

    中文对照:(编译错误)函数xxx定义非法
    分析:一般是在一个函数的函数体中定义另一个函数

    error C2632: ‘type1’ followed by ‘type2’ is illegal

    中文对照:(编译错误)类型1后紧接着类型2,这是非法的
    分析:例如“int float i;”语句

    error C2660: ‘xxx’ : function does not take n parameters

    中文对照:(编译错误)函数xxx不能带n个参数
    分析:调用函数时实参个数不对,例如“sin(x,y);”

    error C2664: ‘xxx’ : cannot convert parameter n from ‘type1’ to ‘type2’

    中文对照:(编译错误)函数xxx不能将第n个参数从类型1转换为类型2
    分析:一般是函数调用时实参与形参类型不一致

    error C2676: binary ‘<<’ : ‘class istream_withassign’ does not define this operator or a conversion to a type acceptable to the predefined operator error C2676: binary ‘>>’ : ‘class ostream_withassign’ does not define this operator or a conversion to a type acceptable to the predefined operator

    分析:“>>”、“<<”运算符使用错误,例如“cin<

    展开全文
  • 流程: 预处理:展开头文件/宏替换/去掉注释/条件编译 (test.i main .i) 编译:检查语法,生成汇编 (test.s main .s) 汇编:汇编代码转换机器码 ...

    流程:

    1. 预处理:展开头文件/宏替换/去掉注释/条件编译                       (test.i main .i)

    2. 编译:检查语法,生成汇编                                                      ( test.s  main .s)

    3. 汇编:汇编代码转换机器码                                                        (test.o main.o)

    4. 链接:链接到一起生成可执行程序                                              a.out

     

     

    1. 预处理

    预编译过程主要做4件事:

    1)展开头文件

    在写有#include <filename>或#include "filename"的文件中,将文件filename展开,通俗来说就是将fiename文件中的代码写入到当前文件中;

    2)宏替换

    3)去掉注释

    4)条件编译

     

    2. 编译

    编译是读取源程序(字符流),对之进行词法、语法和语义的分析,将高级语言指令转换为功能等效的汇编代码。

    1)词法分析

    识别单词并分类。

    词法分析器读入组成源程序的字符流,并将其组成有意义的词素的序列。形如<token-name, attribute-value>这样的词法单元。

    词法分析的输入是源程序,输出是识别出的记号流.目的是识别单词. 至少分以下几类:关键字(保留字)、标识符、字面量、特殊符号

    2)语法分析

    组词成句及语法错误检查

    语法分析器使用由词法分析器生成的各词法单元的第一个分量来创建树形的中间表示。该中间表示给出了词法分析产生的词法单元的语法结构。常用的表示方法是语法树,树中每个内部节点表示一个运算,而该节点的子节点表示运算的分量。

    输入是词法分析器返回的记号流,输出是语法树.目的是得到语言结构并以树的形式表示.对于声明性语句,进行符号表的查填,对于可执行语句,检查结构合理的表达式运算是否有意义.

    3)语义分析

    分析各种语法成分的语义特征

    语义分析器使用语法树和符号表中的信息来检查源程序是否和语言定义的语义一致 。它同时收集类型信息,并存放在语法树或符号表中,以便在中间代码生成过程使用。

    语义分析的一个重要部分就是类型检查。比如很多语言要求数组下标必须为整数,如果使用浮点数作为下标,编译器就必须报错。再比如,很多语言允许某些类型转换,称为自动类型转换。

    根据语义规则对语法树中的语法单元进行静态语义检查,如类型检查和转换等,目的在于保证语法正确的结构在语义分析上也是合法的.

    4)生成中间代码(可选)

    生成一种既接近目标语言,又与具体机器无关的表示,便于代码优化与代码生成.

    5)优化中间代码(可选)

    局部优化、循环优化、全局优化等;优化实际上是一个等价变换,变换前后的指令序列完成同样的功能,但在占用的空间上和程序执行的时间上都更省、更有效

    6)生成汇编代码

     

     

     

    3. 汇编

    汇编实际上指把汇编语言代码翻译成目标机器指令的过程,生成目标文件。

    目标文件中所存放的也就是与源程序等效的目标的机器语言代码。目标文件由段组成。通常一个目标文件中至少有两个段:

    代码段:该段中所包含的主要是程序的指令。该段一般是可读和可执行的,但一般却不可写。

    数据段:主要存放程序中要用到的各种全局变量或静态的数据。一般数据段都是可读,可写,可执行的。

     

     4. 链接

    由汇编程序生成的目标文件并不能立即就被执行,其中可能还有许多没有解决的问题。

    例如,某个源文件中的函数可能引用了另一个源文件中定义的某个符号(如变量或者函数调用等);在程序中可能调用了某个库文件中的函数,等等。所有的这些问题,都需要经链接程序的处理方能得以解决。

    链接程序的主要工作就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够诶操作系统装入执行的统一整体。

     

    根据开发人员指定的同库函数的链接方式的不同,链接处理可分为两种:

    (1)静态链接

    在这种链接方式下,函数的代码将从其所在地静态链接库中被拷贝到最终的可执行程序中。这样该程序在被执行时这些代码将被装入到该进程的虚拟地址空间中。静态链接库实际上是一个目标文件的集合,其中的每个文件含有库中的一个或者一组相关函数的代码。

    (2) 动态链接

    在此种方式下,函数的代码被放到称作是动态链接库或共享对象的某个目标文件中。链接程序此时所作的只是在最终的可执行程序中记录下共享对象的名字以及其它少量的登记信息。在此可执行文件被执行时,动态链接库的全部内容将被映射到运行时相应进程的虚地址空间。动态链接程序将根据可执行程序中记录的信息找到相应的函数代码。

     

    对于可执行文件中的函数调用,可分别采用动态链接或静态链接的方法。使用动态链接能够使最终的可执行文件比较短小,并且当共享对象被多个进程使用时能节约一些内存,因为在内存中只需要保存一份此共享对象的代码。但并不是使用动态链接就一定比使用静态链接要优越。在某些情况下动态链接可能带来一些性能上损害。

     

     

     

     

     

    展开全文
  • C语言编译过程常见的错误和警告

    万次阅读 2017-09-04 14:28:30
    一、 C语言编译过程 C语言的编译过程可分为四个阶段: 1、预处理(Preprocessing) 对源程序中的伪指令(即以#开头的指令)和特殊符号进行处理的过程。 伪指令包括:1)宏定义指令;  2)条件编译指令;  ...

    C语言的编译过程:

    一、 C语言编译过程

    C语言的编译过程可分为四个阶段:

    1、预处理(Preprocessing)

    对源程序中的伪指令(即以#开头的指令)和特殊符号进行处理的过程。

    伪指令包括:1)宏定义指令;

          2)条件编译指令;

          3)头文件包含指令;

    2、编译(Compilation)

    编译就是将源程序转换为计算机可以执行的二进制代码

    说明:

      在Linux下,目标文件的缺省后缀为.o

      编译程序将通过词法分析和语法分析,将其翻译成为等价的汇编代码。

      在使用gcc进行编译时,缺省情况下,不输出这个汇编代码的文件。如果需要,可以在编译时指定-S选项。这样,就会输出同名的汇编语言文件。

    3、汇编(Assembly)

    汇编的过程实际上是将汇编语言代码翻译成机器语言的过程。

    产生一个扩展名为.o的目标文件。

    4、链接(Linking)

    将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息。(生成.exe文件)



    C语言在编译过程中常见的error或warning:


    1、在预处理阶段:


    (1)、error:No such file or directory
       中文含义:没有相应文件或目录
       错误原因:编译器的搜索路径上找不到所需要的文件。该文件可能已在命令行中指定,或在 #include 语句中说明。

    (2)、error: macro or '#include' recursion too deep
    中文含义:宏或'#include' 递归太深
    错误原因:语句 #include 嵌套太深。当预处理器遇到太多嵌套的 #include 指令时,会导致此错误。通常该错误由两个或多个文件进行相互引用时,会引发无限递归。


    (3)、error:invalid preprocessing directive #...

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

    (4)、error:unterminated '#if' conditional
    中文含义:'#if' 语句条件没有终止
    错误原因:缺少 #endif 语句

    2、在编译阶段:

    (1)、error:'variable' undeclared (first use in this function)
    中文含义:变量'variable' 没有声明(第一次使用此变量)
    错误原因:你没有声明‘variable’;


    (2)、error:conflicting types for 'Alex'
    中文含义:对 'Alex' 变量存在突出类型
    错误原因:前面可能已对 'Alex' 声明了其它数据类型。


    (3)、error:too many types in declaration
    中文含义:在声明中定义太多的类型

    错误原因:少了逻辑运算符关系,关系运算符之类的符号


    (4)、warning: comparison between pointer and integer
    中文含义:警告:对指针和整型值进行比较可能没问题。此警告通常是由'if (strstr(line,"word") != NULL )' 之类的strstr 函数返回指针或空值。


    编译时可能遇见的error或warning太多了,我只列出了几个;


    3、在链接阶段:

    (1)、error:file not recognized: File format not recognized
    中文含义:文件不可识别:文件格式不可识别。
    错误原因:文件扩展名不是 ‘.c’。

    (2)、error:undefined reference to 'foo'
    中文含义:没定义对'foo' 的引用。
    错误原因:程序中使用了在本文件和其它库中没有定义的函数或变量。有可能是丢失了链接库,或使用了不正确的名字。


    (3)、error:usr/lib/crt0.o: Undefined symbol _main referenced from textsegment
    中文含义:从文本段引用没定义的_main 符号
    错误原因:缺少 main()函数—但实际上有,为什么?
    1.在头文件中可能存在语法错误;
    2.在C 源文件中可能缺少gcc 命令


    (4)、error:Undefined symbol _initscr referenced from text segment
    中文含义:从文本段引用没定义的_initscr 符号
    错误原因:调用了一个函数,但并没有该函数,或在#include 语句中没有包含该函数的库。


    4、在运行阶段:

    (1)、error while loading shared libraries:cannot open shared object file: No such file or directory
    中文含义:装载共享库是出错:
    不能打开共享对象文件:不存在该文件或目录
    错误原因:程序中使用了共享库,但程序启动时通过动态链接找不到所需的共享库文件。如果确定存在,则请修改共享类库搜索路径变量值LD_LIBRARY_PATH。

    (2)、error:Segmentation fault
    中文含义:分段错误,总线错误
    错误原因:企图访问受保护的内容或覆盖重要的数据! 它指明内存访问错误。
    通常的原因如下:
    1、反向引用一个空指针或没初始化的指针;
    2、超出数组访问的下标;
    3、对 malloc, free 和相关函数不正确的使用;
    4、使用 scanf 时的参数(数量、类型)不正确。

    (3)、error:floating point exception
    中文含义:浮点运算异常
    错误原因:这是个算术运算异常。如除数为0,上溢、下溢或非法的操作(如对-1 求平方根)。

    (4)、error:Illegal instruction
    中文含义:非法指令
    错误原因:当系统遇到非法的机器指令时,产生此错误。通常此类错误是在源代码已编译成特定机器的目标代码后,又在其它类型的机器上运行时发生。

    yopeace


    展开全文
  • C语言

    万次阅读 多人点赞 2019-12-18 23:01:50
    C语言 42.C语言是一种计算机高级语言。 43.C语言允许直接访问物理地址,能进行位操作。 44.C语言是结构化程序设计语言 45.c程序要通过编译,连接...50.C语言的每个语句的最后必须一个分号 51.C语言本身没有输入...

    公共考点
    1.算法的空间复杂度是指算法在执行过程中所需要的内存空间。
    2.算法的时间复杂度是指算法所需要的计算工作量。
    3.数据的逻辑结构与储存结构不是一一对应的。
    4.队列的修改是以先进先出的原则进行的。–与队列结构有关联的是先到先服务的作业调度。
    5.循环队列中的元素个数随队头指针和队尾指针变化而动态变化。
    6.C语言中的result只是一个自己定义的量
    7.对空和队满时,头尾指针均相等。
    8.冒泡法是在扫描过程中逐次比较相邻两个元素的大小。例:9+8+7+6+5+4+3+2+1=45.
    9.对象间的信息传递靠消息。
    10.多态性是指同一个操作可以是不同对象的行为。操作—对象。

    C语言
    1.源程序的扩展名为.c,目标程序的扩展名为.obj,可执行程序的扩展名为.exe(每个后缀为.c的C语言都可以单独进行编译)(C语言编译程序把.c编译成.obj的二进制文件)(链接形成.exe文件)
    2.循环结构、选择结构,顺序结构都是结构化程序的基本结构。
    3.N-S流程图是复杂算法的描述手段。
    4.长方形为处理框。椭圆形为连接点。
    5.一个c语言只能有一个主函数。
    6.函数的定义不可以嵌套,函数的调用可以嵌套。
    7.C语言总是以main函数开始执行。
    8.常量的类型:整型常量、实型常量、字符常量、字符串常量、符号常量。
    9.十进制整型常量:基本数字范围:0-9;(十进制小数两边必须有数字)
    八进制整型常量:以0开头,输出格式控制符为%o,基本数字范围0-7;
    十六进制整型常量:以0x开头,输出格式为%x,基本数字范围为0-15写为A-F或a-f;
    指数形式:e前必须有数字,e后必须为整数。
    10. 关键字属于标识符。(关键字不能做变量名也不能做函数名)
    11.数值型常量有整型常量、实型常量但均有正负值之分。
    12.语言的预编译处理可以可以用符号名代表一个常量定义是不必指定常量类型。
    13.实型常量又称实数或浮点数。在C语言中可以用单精度型和双精度型两种形式表示实型常量,分别用类型名float和double进行定义。实型常量在一般的微型集中占用4个字节,一般形式或者指数形式,数值范围都是-1038~1038,有效数字是7位。(不能是整形数据,如0)(常量的类型可以从字面上区分)(1为整型常量)(1.0为实型常量)(a为字符型常量)
    14.\0为八进制数,所以\09是错误的。
    15.字符常量在内存中占1个字节,字符常量可以进行关系运算。不能参与数值运算,可以参与任何整数运算。
    16.不能用字符串常量对字符数组名进行整体赋值操作。
    17.可以使用字符串常量来给一维数组进行复制。
    18.关于字节大小的问题

    16位编译器:char 1个字节  char* 2个字节 int 2个字节 float 4个字节 double 8个字节
    32位编译器:char 1个字节  char* 2个字节 int 4个字节 float 4个字节 double 8个字节
    64位编译器:char 1个字节  char* 2个字节 int 4个字节 float 4个字节 double 8个字节
    

    19.10进制转8进制,手算用 除8取余数法得
    20.十进制转十六进制为:除十六取余直到商为0,余数从后往前读。
    21.%f代表单精度浮点型数据(float),%lf代表双精度浮点型数(double)。
    单精度浮点数有效数字保证6位,部分7位,双精度浮点数有效数字保证15位,部分16位。
    22.sizeof可以看成是一个无符号整型表达式(sizeof为字节运算符)
    23.强制运算符:(类型名)(表达式) 逗号运算符:, 条件运算符::? :
    24. 赋值运算符左边必须是(一个)变量。
    25.a=bc,先运算bc,这个表达式的含义是,若b与c相等,那么得出的值为1,若不等则为0.
    26.“^” 按位异或 两数的二进制对应位相同,则为0,不同则为1.
    27.“|” 按位或 两个二进制中只要有一个为1,则结果为1。
    28.“~” 按位取反 二进制 0变1,1变0.
    29. “&”按位与 两个二进制都为1,则该位的结果为1,否则为零
    【 零的按位取反是 -1(0在数学界既不是正数也不是负数)
    所有正整数的按位取反是其本身+1的负数
    所有负整数的按位取反是其本身+1的绝对值 】
    30.位运算的对象只能是整形或字符型数据
    31.||逻辑或 前后条件只要有一个满足则为真。
    32.&&逻辑与 前后条件同时满足表达式为真。
    33.再用||的地方一般可以用|代替,但是用|的地方不能用||代替。
    34.“&”取地址运算
    35“”指针运算符
    36.p是指针变量,则&p是变量p的地址
    37.p是指针变量,则
    p是变量p所指向地址的值
    38.基类型不同的指针变量不可以相互混用
    39.函数的类型可以是指针类型
    40.函数的参数可以是整型、实型、字符型、指针类型。
    41.在这里插入图片描述

    42.C语言是一种计算机高级语言。
    43.C语言允许直接访问物理地址,能进行位操作。
    44.C语言是结构化程序设计语言
    45.c程序要通过编译,连接才能得到可执行的目标程序
    46.用c语言编写程序,可以编写出任何类型的程序
    47.C语言允许有空函数
    48.C程序书写格式,允许一行内可以写几个语句
    49.C程序的语句无行号(C语言中给源程序加行号;行号是用来定位代码的,指文件在几行)
    50.C语言的每个语句的最后必须有一个分号
    51.C语言本身没有输入输出语句(没有特定的输入输出语句)
    52.C语言可用来编写应用软件,也可用来编写系软件
    53.TurboC是在微机上广泛使用的编译程序
    54.C语言的数据结构是以数据类型形式出现的(不是常量和变量)
    55.空类型是C语言的一种数据类型
    56.C语言中数据有常量和变量之分
    57.利用指针和结构体类型可以构成表、树等复杂的数据结构
    58.在C程序中对所用到的所有数据都必须指定其数据类型
    59.c程序运行过程中,其值不能被改变的量称为常量
    60.在程序运行过程中,其值可以改变的量称为变量
    61.C语言可以用一个标识符代表一个常量,称为符号常量
    62.C语言规定标识符只能由字母、数字和下划线三种字符组成
    63.C语言整型常量可用十进制整数、八进整数和十六进制整数三种形式表示
    64.在现微机上使用的C编译系统,每一个整型变量在内存中占2个字节
    65.整型变量的基本类型符为int
    66.在微机上,一个长整型变量在内存中占4个字节(float型变量在内存中占4个字节)
    67.一个int型变量的最大允许值为32767
    68.在一个整常量后面加一个字母“L”或“1”.则认为该常量是longint 型常量
    69.C语言实型常量可用二进制小数和指数二种形式表示
    70.C语言实型变量分为:float型、double型、long double型三类
    71.C语言doule型一个变量的数值有效数字是16位
    72.C语言的字符常量是用单引号括起来的一个字符
    73.C语言的转义字符是以一个“\”开头的一种特殊形式的字符常量
    74.C语言中换行符使用’\n’,这是一个转义字符
    75.转文字符\r的含义是回车。
    76.C语言的字符型变量只能存放一个字符
    77.C语言允许字符数据与整数直接进行算术运算
    78.C语言允许在定义变量的同时使变量初始化
    79.C语言允许整型、实型、字符型数据间可以混合运算
    80.C语言规定两个整数相除的结果为整数
    81.用求余运算符“%”作运算,运算符两侧均应为整型数据
    82.用算术运算符和括号将运算对象按C语法规则组成的式子,称为C算术表达式
    83.算术运算符的结合方向为“自左至右”
    84.强制类型转换时,原来变量的类型未发生变化
    85.自增、自减运算符的结合方向为“自右至左”
    86.自增运算符只能用于变量,不能用于常量或表达式
    87指针.自增(减)运算符也可以用于指针变量,使指向下一个地址
    88.运算符“=”的作用是将一个数据赋给一个变量
    89.运算符“”的作用是将两侧数据是否相等
    90.赋运算符的结合方向是“自右向左”
    91.凡是二目运算符,都可以与赋值运算符一起组合成复合赋值运算符
    92.运算符“
    ”的作用是将一个数据赋给一个变量
    93.C语言不允许将实型数据赋给整型变量
    94.一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式
    95.一个C程序可以由若干个源程序文件组成
    96.一个源文件可以由若千个函数和预处理命令以及全局变量声明部分组成
    97.空语句是C语言的一种语句
    98.复合语句中最后一个语句中最后的分号不能省略不写
    99.putchar函数的作用是向终端输出一个字符
    100.getchar函数的作用是从终端输入一个字符
    101.格式输出函数(print)一次可以输出多个数据
    102.printf函数的%ld格式参数,用来输入出长整型数据
    103.printf函数的%o格式参数,用来以8进制数形式输出整数
    104.printf函数的%f格式参数,用来以小数形式输出实数
    105.printf函数的%x格式参数,可以输出指定参数的16进制形式
    106.printf函数的%s格式参数,用来输出一个字符串
    107.C语言不是面向对象的程序设计语言
    108.printf函数的%e格式参数,以指数形式输出实数
    109.C语言单精度数的有效数一般为7位
    110.printf函数的%g格式参数
    111.%g是C语言printf()函数的一个输出格式类型,它表示以%f%e中较短的输出宽度输出单、双精度实数,在指数小于-4或者大于等于精度时使用%e格式
    112.p++是指下一个地址。
    (p)++是指将p所指的数据的值加一。
    C编译器认为
    和++是同优先级操作符,且都是从右至左结合的,所以p++中的++只作用在p上,和(p++)意思一样;在(p)++中,由于()的优先级比和++都高,所以++作用在()内的表达式*p上。比如有:
    int x,y,a[]={1,2,3,4,5},*p=a,*q=a;
    x=*p++;//执行这一句后x=a[0]=1,p=a+1
    y=(*q)++;//执行这一句后,y=a[0]+1=2,q仍然=a
    113. printf函数的附加格式说明字符“m”的含义是指输出数据的最小宽度
    114.scanf函数中的“格式控制”后面应当是变量地址(不是变量符)
    115.逻辑运算符>算术运算符>关系运算符>条件运算符>赋值运算符(罗算管调幅)
    116.条件运算符的结合方向是“自右向左"
    117.if语中又包含文可以转在电百度网点电 平句的嵌套
    118.条件运算符要求有3个操作对象,称为三目运算符
    119.条件表达式中三个表达式的类型可以不同
    120.switch语句是多分支选择语句
    121.switch语句中每一个case的常量表达式的值必须互不相同
    122.switch语句执行完一个case后面的语句后,流程控制转移到下一个case继续执行
    123.switch语句中多个case可以共用组执行语句
    124.goto语句为无条件转向语句
    125.C语句的循环语句中循环体如果包含一个以上的语句,必须以复合语句形式出现bre
    126.for循环语句中的3个表达式都可以省略
    127.C语句的一个循环体内允许又包含另一个完整的循环结构
    128.break语句不能用于循环语句和switch语句之外的任何其它语句中
    129.continue语句的作用是结束本次循环(而不是终止整个循环)
    130.C数组中的每一个元素都必须属于同一个数据类型
    131.C数组必须先定义,然后使用
    132.C语言规定只能逐个引用数组元素而不能一次引用整个数组
    133.在定义一维数组时可以只给一部分元素赋初值
    134.对二维数组初始化,可以分行给数组赋初值
    135.可以对二维数组的部分元素赋初值
    136.字符数组中的一个元素只存放一个字符
    137.如果一个字符数组中包含一个以上结束符’\0”,则遇第一个’\0’时输出就结束
    138.puts函数的作用是将一个字符串输出终端
    139.gets丽数的作用是从终端输入一个字符串到字符数组
    140.strlen 函数是测试字符串长度的函数
    141
    strcat函数是“字符串复制函数”。X
    strcpy函数是“字符串连接函数”。X
    strcmp函数是“字符串复制函数”。X
    strlwr函数是测试字符串长度的函数。X
    strupr函数是测试字符串长度的函数。X
    142.C程序一个函数可以被一个或多个函数调用多次
    143.一个C程序可由一个主函数和若干个其它函数构成
    144.C程序以源程序为单位进行编译(而不是函数)
    145.C程序由一个或多个源程序文件组成
    146.C语言在定义函数时是互相独立的,不能嵌套定义
    147.在调用有参函数时,主调函数和被调用函数之间有数据传递关系
    148.在调用一个函数的过程中又出现直接或间接地调用该函数本身称为函数的递归调用
    149.在一个函数内部定义的变量是内部变量,称为局部变量
    150.在函数之外定义的变量称为外部变量,是全局变量
    151.从变量的作用域角度来分,可以分为全局变量和局部变量(而不是静态和动态变量)
    152.静态存储方式是指在程序运行期间分配固定的存储空间的方式
    153.存储方法分为两大类:静态存储类和动态存储类
    154.C语言允许将局部变量的值放在CPU中的寄存器中,这种变量称为“寄存器变量”
    155.局部静态变量不能定义为寄存器变量
    156.如果一个函数只能被本文件中其它函数所调用,称为内部函数
    157.C源程序中的预处理命令,它不是C语言本身的组成部分
    158.宏定义不是C语句,在行末不加分号
    159.宏定又是用宏名代替一个字符串,只作简单的置换,不作正确性检查
    160.在进行宏定义时,可以引用已定义的宏名
    161.宏替换不占程序运行时间,只占编译时间
    162.文件包含处理是指个源文件可以将另一个的全部内容含进来源文件包
    163.一个include命令只能指定一个被包含文件
    164.存放变量地址的变量是指针变量
    165.C语言中变量的指针就是变量的地址
    166.函数的参数也可以是指针变量
    167.指针变量可以指向变量,也可以指向数组和数组元素
    168.引用数组元素可以用下标法,也可以用指针法
    169.用指针变量可以指向一维数组,也可以指向多维数组,用指针变量也可以指向一个函数
    170.一个函数可以带回一个整型值、字符值或实型值,也可以带回指针型的数据
    171.指针数组中的每一个元素都相当于一个指针变量
    172.指针数组中的每一个元素都相当于一个整型变量
    173.指针变量可以有空值,即该指针变量不指向任何变量
    174.若两个指针指向同一个数组的元素。则两指针变量可以进行比较
    175.用户自己定义一个结构教型后们其中并无具体数据
    176.在程序中使用的可和百网时 定义结构体类型的变量
    177.结构体类型的成员也可以是一个结构体变量
    178.结构体成员名可以与程序中的变量名相同
    179.不能将一个结构体变量作为一个整体进行输入和输出
    180.对结构体变量的成员可以像普通变量一样进行各种运算
    181.可以引用结构体变量的地址
    182.可以引用结构体变量成员的地址
    183.结构体数组的每个元素都是一个个结构体类型的数据
    184.对结构体数组可以初始化,即赋初值
    185.可以定义一个指针变量,用来指向一个结构体变量
    186.指针可以用结构体变量作链表中的结点
    187.malloc函数的返回值是一个指向分配域起始地址的指针
    188.建立动态链表是指在程序执行过程中从无到有地建立起一个链表
    189.使几个不同的变量共占同一段内存的结构,称为共用体类型的结构
    190.共用体变量所占的内存长度等于最长的成员长度
    191.定义了共用体变量,只能引用共用体变量中的成员(不能引用公用体变量)
    192.共用体变量的地址和它的各成员的地址都是同一地址
    193.共用体类型可以出现在结构体类型定义中
    194.结构体类型可以出在共用体类型定义中
    195.在C编译中,对枚举元素按常量处理
    196.一个整数不能直接赋给一个枚举变量
    枚举类型在C#或C++,java,VB等一些计算机编程语言中是一种基本数据类型而不是构造数据类型,而在C语言等计算机编程语言中是一种构造数据类型 。它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。
    枚举可以根据Integer、Long、Short或Byte中的任意一种数据类型来创建一种新型变量。这种变量能设置为已经定义的一组之中的一个,有效地防止用户提供无效值。该变量可使代码更加清晰,因为它可以描述特定的值。
    197.可以用typedef声明新的类型名来代替已有的类型名
    198.位运算的运算量只能是整型或字符型的数据
    200.位运算符与赋值运算符可以组成复合赋值运算符
    在 C 语言中, 一种方法是用叫做位段的构造类型来定义一个压缩信息的结构。
    201.已有定义int (*p)( );指针p可以指向函数的入口地址
    202.C语言中运算对象必须是整型的是%=
    203.int *p 表达的是p是指向int型数据的指针。
    204函数rewind的功能是将文件指针重新指向一个流的开头(即使文件指针重新返回文件的开始位置),int rewind(FILE *stream);并且无返值。
    205.如果函数值的类型与返回值类型不一致,以函数值类型为准
    206.c语言中形参和实参类型不一致时以形参的类型为准
    207.形参应该是函数声明的时候就已经定义好
    208.若有定义int t[3][2],能正确表达t数组元素地址的是–t[2]+1
    209.int[]={1,2};
    210.C语言中的循环语句有for,while,do-while和goto,,***不是if、switch、break
    211.不正确的赋值语句是—ch‘a+b’,正确的是ch=‘\0’ ch=‘7’+‘9’ ch=7+9
    212.正确的赋值语句x3=12;
    213.C语言逻辑运算时,0为假,非0为真
    214.字符串常量是以双引号扩起来的字符序列“a”(其他C语言常量‘\n’ 012)(e-2不是C语言常量----实数的指数形式中,e后面必须有一个整数)

    301.一个位段必须存储在同一存储单元中
    302.位段的长度不能大于存储单元的长度
    303.一个c程序由若干个函数构成,其中有且仅有一个主函数
    304.指针变量中存放的是它所指对象的地址
    305.在C语言中,分号是语句的必然组成部分
    306.结构体变量所占空间是各成员所占空间之和
    307.数据文件可顺序读取,也可借助文件的定位操作实现随机读取
    308.从用户的角度上讲,类型的含义是规定了该类型变量的取值范围和运算范围
    309.c语言中,变量和函数均具有类型和存贮类别两个属性
    340.顺序结构>选择结构>循环结构
    341.函数返回值的类型是由函数定义时指定的类型
    342.*与s[]相等
    343.当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数和整型数值等。
    344. getchar函数没有参数
    345.静态储存方式是在程序运行期间分配固定的储存方式的方式
    356.局部静态变量不能定义为寄存器变量
    357.不能把共用体变量作为函数的参数
    358.一个整数不能直接赋给一个枚举变量
    359.int *p=a 是对指针变量p的正确定义和初始化。
    360.Char s[]=”china”;
    Char p;
    P=s;
    p与s[]相等
    有int [],*p=a
    则p+5表示元素a[]的地址
    361.C语言中,退格符是\b
    362.C语言中,变量的隐含储存类别是auto
    363.实际参数和形式参数可以同名
    364.函数调用可以作为一个函数的形参
    365.结构化程序设计的3中结构是-顺序结构、选择结构、循环结构
    366.当从键盘输入数据时整型变量可以输出整型值和字符,对于实型变量可以输入实型数和整型数值
    367.C语言中逗号运算符的优先级最低,指针最优,单目运算优于双目运算。如正负号。
    先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7.
    逻辑运算最后结合。
    368.C语言区分定义变量名的大小写
    369.设有如下定义:
    struck sk
    { int a;
    float b;
    } data;
    int *p;
    若要使P指向data中的a域,正确的赋值语句是(C)A、 p=&a; B、 p=data.a; C、 p=&data.a; D、 *p=data.a;
    370.double)a是将a转换成double类型;(int)(x+y)是将x+y的值转换成整型。
    371.设有以下说明语句:
    struct stu
    {
    int a;
    float b;
    }
    stutype;
    则下面叙述不正确的是( )。
    A) struct是结构体类型的关键字
    B) structstu是用户定义的结构体类型
    C) stutype是用户定义的结构体类型名
    D) a和b都是结构体成员名
    答案解析
    定义一个结构的一般形式为:
    struct结构体名
    {
    成员列表
    }变量名列表;
    本题中的stutype是在声明结构体类型structstu的同时定义的该结构体变量,而不是用户定义的结构体类型名。类型与变量是不同的概念; 2)对结构体中的成员,可以单独使用,它的作用与地位相当于普通变量;3)成员也可以是一个结构体变量; 4)成员名可以与程序中的变量名相同,二者不代表同一对象。
    372.C语言中的数据类型是指-函数返回值的数据类型
    373.C程序设计语言的基本成分是数据成分、运算成分、控制成分、传输成分。
    374.while(t=1)循环控制表达式的值为1。
    375.printf(++x);表示地址所连接的数值加1.
    376.int[3][4]; 表示a为3行
    4列的数组,它可用的最大行下标为2,列下标最大为3;
    若是引用a[0][4],则超过了数组的范围
    377.若有如下说明和定义
    struct test
    {
    int ml; char m2; float m3;
    union uu
    {
    char ul[5]; int u2[2];
    }
    ua;
    } myaa;
    则sizeof(struct test)
    的值是A.12 B.16 C.14 D.9
    正确答案:A
    在本题中,首先定义了一个结构体。在该结构体中,定义了一个整型变量成员、一个字符型变量成员和一个浮点型变量成员,并在结构体中定义了一个联合体变量成员,联合体变量成员中又包含两个联合体成员数组。题目最后要求计算该结构体变量所占的存储空间。
    在C语言中,联合体变量中的所有成员共享存储空间,联合变量的长度等于各成员中最长的长度,因此,本题的联合体部分所占的长度为5,但是结构体与联合体不一样的是,结构体不能共享空间,一个结构体变量的总长度是各成员长度之和,因此,该结构体所需的存储空间为5+1+2+4=12。本题的正确答案选A。
    378.静态储存类别的关键词是static
    379.C语言中提供了存储说明符auto,register,extern,static说明的四种存储类别。四种存储类别说明符有两种存储期:自动存储期和静态存储期。其中auto和register对应自动存储期。具有自动存储期的变量在进入声明该变量的程序块是被建立,它在该程序块活动时存在,退出该程序块时撤销。
    380.fseek(文件指针,位移量,起始点)
    “起始点”用0,1或2代替,0代表“文件开始”,1为“当前位置”,2为“文件末尾”。“位移量”指以“起始点”为基点,向前移动的字节数。ANSIC和大多数C版本要求位移量是long型数据。这样当文件的长度大于 64k时不致出现问题。ANSI C标准规定在数字的末尾加一个字母L,就表示long型。
    381.若有定义:int (*p)[4];则标识符p ,是一个指针指向一个含有四个整形元素的一维数组。
    382.基本数据类型:整型、实型、字符型
    383.EOF是指向文本文件的结束标志,NULL是打开文件错误时的返回值。feof(fp)用来判断文件是否在文件末尾,文本文件和二进制文件均可以使用此函数,如果遇到文件结束就返回1,否则返回0。
    384.C语言的函数可以嵌套调用
    385.标准库函数fgets(s,n,f)的功能是什么–从文件f中读取长度不超过n-1的字符串存入指针s所指的内存。
    从流中读一行或指定个字符,
    原型是char *fgets(char *s, int n, FILE *stream);
    从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL。
    形参注释:*string结果数据的首地址;n-1:一次读入数据块的长度,其默认值为1k,即1024;stream文件指针
    说得简单一点就是从f这个文件输入流中读取n-1个字符,存到s中。
    如果一行的字符数小于n-1,那么就是一行的字符数,所以应该理解为不超过n-1,如果一行的长度大于n-1,就是n-1个字符
    386.
    1、数据计算类型不同。基本数据类型分为三类:整数型(定点型)、实数型(浮点型)和字符型。除了基本数据类型,还有构造类型(数组、结构体、共用体、枚举类型)、指针类型、空类型void。
    2、各种数据类型的关键词不同。short、long、int、float、double、char六个关键词表示C语言里六种基本数据类型。
    3、不同数据类型占用内存的大小不同。short占2byte,int占4byte,long占4byte,float占2byte,double占8byte,char占1byte(不同的平台可能占用内存大小不一样,具体的可以用sizeof 测试下)。
    387.一个可以没有变量定义和执行部分,例如空函数

    展开全文
  • C语言编译指令

    千次阅读 2011-07-21 11:10:31
    一、预处理的由来: 在C++的历史发展中,很多的语言特征(特别是语言的晦涩之处)来自于C语言,预处理就是其中的一个。C++从C语言那里把C语言预处理器继承过来(C语言预处理器,被Bjarne博士简称为Cpp,不知道...
  • C语言编译环境

    2017-02-12 20:42:55
    1.环境 在ANSI C的任何一种实现中,存在两种不同的环境。 第一种是翻译环境,这里源代码被转换成可执行的机器指令。...1. 组成一个程序的每个源文件通过编译过程分别转换成目标代码(object code)。 2. 每个
  • C语言编译 详解

    万次阅读 2011-11-16 10:59:41
    显示问题,必要的话请转向原始链接 一、C语言由源代码生成的各阶段如下: <!-- p {margin-bottom:0.21cm} --> C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件
  • C语言条件编译与预处理

    千次阅读 2017-10-13 15:17:33
    一、C语言由源代码生成的各阶段如下: C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件  其中 编译预处理阶段,读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行...
  • 然而 ,C标准不仅描述C语言,还描述如何执行 C 预处理器,C标准库那些函数,以及这些函数的工作原理。 C 预处理器在程序执行之前检查程序(故称为预处理器),根据程序中的预处理器指令,预处理器把符号缩写替换...
  • 来自:http://softbbs.pconline.com.cn/topic.jsp?tid=7353706致命错误: 1.bad call of in-line function 内部函数非法调用 在使用一个宏定义的内部函数时,没有正确调用。一个内部函数以双下划线(__)开始...
  • 华为C语言编程规范(精华总结)

    万次阅读 多人点赞 2020-03-24 09:48:55
    11、禁止在 extern "C" 中包含头文件 在extern "C"中包含头文件,会导致extern "C"嵌套,Visual Studio对extern "C"嵌套层次限制,嵌套层次太多会编译错误。 在extern "C"中包含头文件,可能会导致被包含头文件的...
  • C语言基础知识梳理总结

    万次阅读 多人点赞 2017-03-06 09:54:48
    C语言是当代人学习及生活中的必备基础知识,应用十分广泛,下面为大家带来C语言基础知识梳理总结,C语言零基础入门绝对不是天方夜谭!
  • C语言之存储说明符

    2018-03-22 14:18:36
    C语言有5中存储类型修饰符: auto register static extern typedef 下面分别介绍各说明符的用法: auto: 表明变量具有自动存储类型 auto说明符只能用在具有代码块作用域的变量的声明中, 但是由于这变量本身就...
  • C语言详解(6)宏定义和条件编译

    万次阅读 多人点赞 2017-12-02 21:54:41
    宏定义和条件编译    关于C语言详解系列blog的目录:...在C语言中作为预处理指令包括:宏定义、文件包含、条件编译。 条件编译其实就是将if…else…的设计思想引入到预处理功能中,给编
  • 【C】C语言预处理器的个命令

    千次阅读 2015-04-08 09:47:54
    C语言预处理器是个简单的的宏处理器,预处理器用特殊的命令行控制,这些命令行以#开头,不包含预处理器命令的...#define——定义预处理器宏,如果是函数式宏定义,左括号与宏名之间不能空格,所有参数及整个宏替换最
  • C语言宏定义和个坑

    千次阅读 2017-08-16 14:11:49
    总结一下C语言中宏的一些特殊用法和个容易踩的坑。由于本文主要参考GCC文档,某些细节(如宏参数中的空格是否处理之)在别的编译器可能细微差别,请参考相应文档。 宏基础 宏仅仅是在C预处理阶段的一种...
  • https://blog.csdn.net/halikuiyin/article/details/77837117C语言编译过程中常见的error或warning:1、在预处理阶段:(1)、error:No such file or directory 中文含义:没有相应文件或目录 错误原因:编译器...
  • C语言宏定义的个坑和特殊用法

    万次阅读 2017-03-14 14:33:28
    总结一下C语言中宏的一些特殊用法和个容易踩的坑。由于本文主要参考GCC文档,某些细节(如宏参数中的空格是否处理之)在别的编译器可能细微差别,请参考相应文档。 宏基础 宏仅仅是在C预处理阶段的一种...
  • C语言和C++什么区别?

    千次阅读 多人点赞 2020-12-25 11:42:48
    由于引进了C++ 这个名字,写出了C++ 的参考手册 [Stroustrup,1984],与C语言的兼容性问题就变成了一个最重要的问题,而且也成为争论的焦点。 还有,到1983年后期,贝尔实验室里负责开发和支持UNIX、生产AT&T...
  • 提高C语言编程能力的点策略

    千次阅读 2018-11-28 14:16:05
    C语言是计算机专业的一门专业必修课程,是其他编程课程的基础,在教学过程中起着重要的引导作用。但在教学过程中存在学生学习兴趣不高、应用能力不强、编程能力差等问题,针对这些问题,从上好第一次课、强化实践...
  • 细谈C语言中的编译和链接

    千次阅读 2012-09-29 16:51:03
    但是当涉及到编译和链接的问题很多人却不以为然,毕竟我们在任何IDE下除了code以外对编译链接的理解就是一到两个按钮而已,但是通过阅读以下的内容,你会发现C语言本身的许多语法特性与其独到的编译连接方式是...
  • c语言编程软件哪些 Win7下用哪种C语言编译器

    万次阅读 多人点赞 2018-04-20 21:23:50
    C语言是一门历史很长的编程语言,其编译器和开发工具也多种多样,其开发工具包括编译器,现举个开发工具供大家选择,当然也要根据自己的操作系统来选择适合自己的开发工具 好多刚开始接触c语言的朋友都想知道用...
  • 例如#ifndefine,这是"if not defined"的简写,是宏定义的一种,它是可以根据是否已经定义了一个变量来进行分支选择,一般用于调试等等。实际上确切的说这应该是预处理功能中三种(宏定义...C语言编译系统包括预处理...
  • C语言基础

    千次阅读 2020-09-30 22:41:49
    其设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。 The first C program 数据类型 char short int long long long float double ..
  • C语言重要知识点

    万次阅读 多人点赞 2017-12-04 21:24:47
    C语言最重要的知识点 总体上必须清楚的:  1)程序结构是三种: 顺序结构 、选择结构(分支结构)、循环结构。  2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),且只有一个...
  • C语言中的三大预编译功能

    千次阅读 2017-04-07 16:53:40
    宏定义是C语言提供的三种预处理功能的其中一种。宏定义和操作符的区别是:宏定义是替换,不做计算,也不做表达式求解。 宏定义又称为宏代换、宏替换,简称“宏”。 格式: #define 标识符 字符串 ...
  • C语言经典面试题 与 C语言面试宝典

    万次阅读 多人点赞 2017-12-22 16:15:26
    编译又称预处理,是整个编译过程最先做的工作,即程序执行前的一些预处理工作。主要处理#开头的指令。如拷贝#include包含的文件代码、替换#define定义的宏、条件编译#if等。. 何时需要预编译: 1、总是使用...
  • C语言错误信息中文解释

    千次阅读 2010-04-10 18:49:00
    【引用 《智能家电控制技术》帮助文档 这里很是HTML版的,很实用好查,但就是不能下载成CHM版的,本地是不能用啊。】1.#operator not followed by macro argument name"#"运算符后无宏变元名。在宏定义中,"#...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 68,488
精华内容 27,395
关键字:

c语言编译错误有几类

c语言 订阅