精华内容
下载资源
问答
  • 定义了输入输出函、类型、和宏。其中包括个重要的数据类型:FILE、size_t...定义了C的预编译宏assert,通常用于辅助检查程序的逻辑错误和一些类型的bug。(常见) 用于操作复数运算的一组函数 数据类型定义和字符

    <stdio.h>定义了输入输出函、类型、和宏。其中包括几个重要的数据类型:FILE、size_t和fpos_t。size_t是由运算符sizeof产生的无符号整型;fpos_t定义能够唯一说明文件中的每个位置的对象。由头部定义的最有用的宏是EOF,其值代表文件的结尾。

    <assert.h>定义了C的预编译宏assert,通常用于辅助检查程序的逻辑错误和一些类型的bug。(常见)

    <complex.h> 用于操作复数运算的一组函数

    <ctype.h>数据类型定义和字符处理函数

    <errno.h>检测程序错误的返回值并定义错误类型

    <fenv.h>用来控制符点操作环境

    <float.h>实数运算的系统参数

    <iso6464.h>在ISO6464字符集下面编程的接口

    <limits.h>整型运算的系统参数

    <locale.h>设定本地化参数

    <math,h>数学函数

    <setjmp.h>非局部分支和跳转处理

    <signal.h>信号处理函数

    <stdarg.h>可变长度参数表

    <stdbool.h>布尔值操作函数

    <stddef.h>标准定义

    <stdint.h>定义整型的各种变量函数

    <stdlib.h>标准库工具

    <string.h>

    <tgmath.h>通用数学宏

    <time.h>时间和日期相关的数据结构和函数

    <wchar.h>

    <wctype.h>


    展开全文
  • 书中专门为学生提供了一个用C语言编写的实习项目,包括前端和后端设计,学生可以在一学期内创建一个功能完整的编译器。  本书适用于高等院校计算机及相关专业的本科生或研究生,也可供科研人员或工程技术人员参考。...
  • 现代编译原理C语言描述-虎书中文版

    热门讨论 2010-04-11 16:47:52
    17.3 使用数据流分析结果的种转换 274 17.3.1 公共子表达式删除 274 17.3.2 常数传播 275 17.3.3 复写传播 275 17.3.4 死代码删除 275 17.4 加快数据流分析 276 17.4.1 位向量 276 17.4.2 基本块 ...
  • 17.3使用数据流分析结果的种 转换 17.3.1公共子表达式删除 17.3.2常数传播 17.3.3复写传播 17.3.4死代码删除 17.4加快数据流分析 17.4.1位向量 17.4.2基本块 17.4.3结点排序 17.4.4使用一定值链和定值一...
  • C语言的关键字分为以下几类: (1)类型说明符 用于定义、说明变量、函数或其它数据结构的类型。如前面例题中用到的int,double等 (2)语句定义符 用于表示一个语句的功能。如例1.3中用到的if else就是条件语句的语句...
  • 文章目录调试的基本步骤Debug和Release的介绍最常用的个快捷键:F5F9F10F11CTRL+F5调试时查看程序当前信息编译常见的错误常见错误分类:编译错误链接型错误运行时错误温馨提示:练习题实例1实例2调整数组使奇数...

    本期主要内容是实用调试技巧


    调试的基本步骤

    1.发现程序存在错误

    2.以隔离、消除等方式对错误进行定位

    3.确定错误产生的原因

    4.提出纠正错误的解决方法

    5.对程序错误予以改正,重新测试


    Debug和Release的介绍

    Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。

    Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。

    我们所说的调试就是在Debug版本的环境中,找代码中潜伏的问题的一个过程。

    最常用的几个快捷键:
    F5

    启动调试,经常用来直接跳到下一个断点处

    F9

    创建断点和取消断点的重要作用,可以在程序的任意位置设置断点。

    F10

    逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句

    F11

    逐语句,就是每次都执行一条语句,但是这个快捷键可以使我们的执行逻辑进入函数内部

    CTRL+F5

    开始执行且不调试


    调试时查看程序当前信息

    查看调用堆栈

    查看汇编信息

    查看局部变量

    查看寄存器信息

    在这里插入图片描述


    编译常见的错误

    常见错误分类:
    编译型错误

    直接看错误提示信息(双击),解决问题。或者凭借经验就可以搞定,easy。

    链接型错误

    看错误提示信息,主要在代码中找到错误信息的标识符,然后定位问题所在。一般是标识符名不存在或拼写错误。

    运行时错误

    不报错,只能借助调试,逐步定位问题,difficult!

    温馨提示:

    遇到报错莫慌,沉下心来,多调试积累经验!


    练习题

    实例1

    #include <stdio.h>
    int main()
    {
        int i = 0;
        int arr[] = {1,2,3,4,5,6,7,8,9,10};
        for(i=0; i<=12; i++)
        {
            arr[i] = 0;
            printf("hello \n");
        }
        return 0;
    }
    

    问:在VS_2019当中跑上述程序,会死循环输出hello,为什么?

    答:i和arr都是局部变量,局部变量是在栈区上的,栈区内存使用习惯是:先用高地址空间,再使用低地址空间,而数组随着下标的增长地址由低到高变化,for循环中,i的内容是从0,一直增加到12,而数组只有10个空间,因此会越界。每次访问arr数组i号位置时,都会将该位置内容设置为0,当访问到arr[12]时,也会将该位置内容设置为0,而该位置恰好为i的位置,即a[12]恰巧将i设置为0,因此造成死循环。

    在这里插入图片描述

    在这里插入图片描述


    实例2

    调整数组使奇数全部都位于偶数前面。
    #define _CRT_SECURE_NO_WARNINGS 1
    #include <stdio.h>
    void swap(int a[] ,int sz)
    {
    	int left = 0;
    	int right = sz - 1;
    	int temp = 0;
    	while (left < right)
    	{
    		while (a[left] % 2 == 1)//奇数就++下一个
    		{
    			left++;
    		}
    		while (a[right] % 2 == 0)//偶数就--前一个
    		{
    			right--;
    		}
    		//不然就互换
    		temp = a[left];
    		a[left] = a[right];
    		a[right] = temp;
    	}
    }
    int main()
    {
    	int a[10] = { 1,58,5,9,5,2,3,4,56,42 };
    	int sz = 0;
    	int i = 0;
    	sz = sizeof(a)/sizeof(a[0]);
    	/*printf("%d", sz);*/
    	swap(a, sz);
    	for (i = 0; i < 10; i++)
    	{
    		printf("%d  ", a[i]);
    	}
    	return 0;
    }
    

    在这里插入图片描述


    实例3

    模拟实现库函数strlen
    int my_strlen(const char *str)
    {
    	const char* a = str;
    	while (*a++)
    	{
    		;
    	}
    	return(a - str - 1);
    }
    

    实例4

    模拟实现库函数strcpy
    char my_strcpy(char* dest, char* src)
    {
    	char* a = dest;
    	while (*a++ = *src++);
    	return(dest);
    }
    


    调试部分内容到此介绍结束了,感谢您的阅读!!!如果内容对你有帮助的话,记得给我三连(点赞、收藏、关注)——做个手有余香的人。

    展开全文
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    虽然C语言是最普遍的一种高级语言,但不同的MCU厂家其C语言编译系统是有所差别的,特别是在一些特殊功能模块的操作上。如果对这些特性不了解,那调试起来就有的烦了,到头来可能还不如用汇编来的快。 5. 在教学中...
  • C语言的关键字分为以下几类: (1)类型说明符 用于定义、说明变量、函数或其它数据结构的类型。如前面例题中用到的int,double等 (2)语句定义符 用于表示一个语句的功能。如例1.3中用到的if else就是条件语句的语句...
  • 'Next of Page在C语言中,可以用以下种方式调用函数: 1.函数表达式  函数作表达式中的一项出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数是有返回值的。例如: z=max(x,y)是一个赋值表达式,...
  • C语言教程(谭浩强)

    2008-12-16 10:35:00
    C语言的关键字分为以下几类: (1)类型说明符 用于定义、说明变量、函数或其它数据结构的类型。如前面例题中用到的int,double等 (2)语句定义符 用于表示一个语句的功能。如例1.3中用到的if else就是条件语句的...
  • 你必须知道的495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    1.3 因为C语言没有精确定义类型的大小,所以我一般都用typedef定义int16和int32。然后根据实际的机器环境把它们定义为int、short、long等类型。这样看来,所有的问题都解决了,是吗? 1.4 新的64位机上的64位类型...
  • 难道在C语言中一个结构不能包含指向自己的指针吗? o 2.7 怎样建立和理解非常复杂的声明?例如定义一个包含 N 个指向返回指向字符的指针的函数的指针的数组? o 2.8 函数只定义了一次, 调用了一次, 但编译器提示...
  • 《你必须知道的495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    《你必须知道的495个C语言问题》以问答的形式组织内容,讨论了学习或使用C语言的过程中经常遇到的一些问题。书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预...
  • 1.3 因为C语言没有精确定义类型的大小,所以我一般都用typedef定义int16和int32。然后根据实际的机器环境把它们定义为int、short、long等类型。这样看来,所有的问题都解决了,是吗? 2  1.4 新的64位机上的64位...
  • 你必须知道的495个C语言问题(PDF)

    热门讨论 2009-09-15 10:25:47
    难道在C语言中一个结构不能包含指向自己的指针吗? . . . . 3 1.7 怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返 回指向字符的指针的函数的指针的数组? . . . . . . . . . . . . . . 3 1.8 函数只定义...
  • 编译原理全套

    2011-12-03 11:17:21
    10.1 C语言编译系统 10.1.1 预处理器 10.1.2 汇编器 10.1.3 连接器 10.1.4 目标文件的格式 10.1.5 符号解析 10.1.6 静态库 10.1.7 可执行目标文件及装入 10.1.8 动态连接 10.1.9 处理目标文件的一些工具 ...
  • 10.1 c语言编译系统 10.1.1 预处理器 10.1.2 汇编器 10.1.3 连接器 10.1.4 目标文件的格式 10.1.5 符号解析 10.1.6 静态库 10.1.7 可执行目标文件及装入 10.1.8 动态连接 10.1.9 处理目标文件...
  • C++程序员面试宝典

    热门讨论 2013-04-01 13:36:19
    6.3 异常与错误 77 面试题73 什么是异常 77 面试题74 如何抛出和捕捉异常 78 第7章 预处理以及内存管理(教学视频:28分钟) 80 7.1 宏定义 80 面试题75 宏定义与操作符的区别 80 面试题76 宏定义如何展开 81 7.2 ...
  • 第3部分是上机指南,详细介绍了Visual C++ 6.0集成环境下编辑、编译、调试和运行程序的方法; 第4部分是上机实验指导,包括程序的调试与测试、实验的目的与要求,并提供了本课程12个实验。 《C程序设计(第四版)》...
  • ● 处理错误条件的异常机制。 ● 管理函数、和变量名的名称空间。 本书在传授知识方面有个优点。大约20年前,《C Primer Plus))一书开创了优良的初级教程传统,本书 建立在这样的基础之上,吸收了其中很多...
  • ● 处理错误条件的异常机制。 ● 管理函数、和变量名的名称空间。 本书在传授知识方面有个优点。大约20年前,《C Primer Plus))一书开创了优良的初级教程传统,本书 建立在这样的基础之上,吸收了其中很多...
  • ● 处理错误条件的异常机制。 ● 管理函数、和变量名的名称空间。 本书在传授知识方面有个优点。大约20年前,《C Primer Plus))一书开创了优良的初级教程传统,本书 建立在这样的基础之上,吸收了其中很多...
  • ● 处理错误条件的异常机制。 ● 管理函数、和变量名的名称空间。 本书在传授知识方面有个优点。大约20年前,《C Primer Plus))一书开创了优良的初级教程传统,本书 建立在这样的基础之上,吸收了其中很多...
  • 对于那些可能尚不支持所有新特性的编译器,我们还希望这些图标能有助于解释这编译器所给出的编译错误信息。这是因为虽然本书中几乎所有例子都已经用最新版本的GNU编译器编译通过,但我们知道一些读者可能尚未将...

空空如也

空空如也

1 2 3 4
收藏数 69
精华内容 27
关键字:

c语言编译错误分几类

c语言 订阅