![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 60
NUAA丶无痕
让学习成为一种习惯,我们的目标是星辰大海!
展开
-
GDB高级使用技巧
前面两篇gdb的文章基本上已经介绍的差不多了,但是还有一些可以提高调试效率的方式需要介绍一下。1.调试宏定义如果gcc只是-g选项,那么宏定义是不能被调试的,-g是有等级的,需要使用-gdwarf-2 -g3才可以调试宏定义如果宏定义只是普通的数值替换 通过p 宏定义就可以打印出值如果宏定义是一系列语句的组合,可通过macro expand 宏定义 把对应的宏语句打印出来,宏定义里的参数可以是任意参数2.调试coredump程序运行可能由于段错误导致运行失败,为了定位到错误需要查看程原创 2021-04-18 22:04:26 · 1232 阅读 · 0 评论 -
C语言之学习单元测试
准备工作Centos下安装gtest:https://blog.csdn.net/wh_computers/article/details/95107014谷歌官方教程及源码(英文版):https://github.com/google/googletest谷歌官方教程(中文版) :https://www.cnblogs.com/jycboy/p/6057677.html手把手教你...原创 2019-07-09 15:25:10 · 436 阅读 · 0 评论 -
gcc/g++ 命令选项
研究makefile文件编写的时候,发现gcc后面跟了 -Wall 参数,所以本文对gcc/g++等常用参数做一个记录。-w:关闭编译时的警告,也就是编译后不显示任何warning,因为有时在编译之后编译器会显示一些例如数据转换之类的警告,这些警告是我们平时可以忽略的。-Wall:选项意思是编译后显示所有警告。-W:类似-Wall,会显示警告,但是只显示编译器认为会出现错误的警告。...原创 2019-07-29 10:52:12 · 715 阅读 · 0 评论 -
GDB调试教程基础版(不包含并发程序)
编程环境系统:CentOs 7.4版本编译器:gcc 4.8.5版本debug:gdb 7.6.1版本文本编辑器:VScode or VIM调试准备工作gdb常用命令:gcc/g++ -g test.c/test.cpp 调试前先对源文件进行编译,注意一定要加 -g。 gdb a.out ...原创 2019-07-04 16:56:27 · 871 阅读 · 0 评论 -
C语言fflush方法
函数名: fflush功 能: 清除读写缓冲区,需要立即把输出缓冲区的数据进行物理写入时头文件:stdio.h原型:int fflush(FILE *stream)其中stream是要冲洗的流 fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃[非标准],一般用不到。fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标...原创 2019-07-09 16:54:57 · 10909 阅读 · 5 评论 -
C语言单元测试之安装gtest教程及一个简单样例
准备工作安装包:gtest1.7.0版本(最新的1.8.0版本一直安装失败,1.7.0版本一次成功)安装链接:百度网盘https://pan.baidu.com/s/1mDy9sB3sBIMei-IM08SWYw 提取码5t7f系统:centos 7.4版本安装过程1.进入gtest-1.7.0目录。2.当前目录打开终端 输入命令 cmake CMakeLists.t...原创 2019-07-08 22:18:02 · 2442 阅读 · 0 评论 -
GDB调试多进程和多线程(进阶版)
环境系统:CentOs 7.4版本编译器:gcc 4.8.5版本debug:gdb 7.6.1版本文本编辑器:VScode or VIM准备工作默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-...原创 2019-07-08 15:09:43 · 1888 阅读 · 1 评论 -
Linux下C语言编程之线程学习
进程和线程的区别进程是资源分配的最小单位,线程是程序执行的最小单位。进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。线程之间的通信更方便,同一进程下的线程共享全局变量、静...原创 2019-07-09 14:46:58 · 150 阅读 · 0 评论 -
Linux下C语言编程之进程学习
进程的定义定义应用程序关于某数据集合上的一次运行活动操作系统进行资源分配和调度的基本单位进程是程序的一次执行过程进程是动态的,程序是静态的同一程序同时运行于若干个数据集合上,该程序将对应与若干个不同的进程每个进程拥有独立的地址空间地址空间包括代码段、数据段和堆栈段 代码段,存储程序的代码 数据段,存储程序的全局变量和动态分配的内存...原创 2019-07-06 15:32:02 · 656 阅读 · 1 评论 -
C语言sleep函数与usleep函数
函数名: sleep头文件:#include <unistd.h>功 能: 执行挂起指定的秒数语 法: unsigned sleep(unsigned seconds);举例:void father(){ int i; for(i = 0 ;i < 3;i++) { printf("father\n"); sleep(1); }...原创 2019-07-10 12:17:11 · 24578 阅读 · 0 评论 -
去除C语言注释
问题想去除C语言里面的所有注释,包括 /**/ 和 // ,网上找的方法一般是正则表达式或者自己写字符串匹配去除,但是那些只能应对简单的情况,对于工程里面很多复杂的C代码,例如遇到printf("/* hello world */")等这种特殊情况往往会出错,所以需要采用一种绝对不会出错的方法解决方法我们采用gcc的预处理,编译C代码的第一步是预处理,一般默认是删除注释,宏展开以及把头...原创 2020-03-31 10:25:23 · 1851 阅读 · 0 评论 -
C语言函数strcpy、strncpy、memcpy、memmove函数的区别以及一些坑
一、函数说明1、strcpy函数char* strcpy(char* dest, const char *src);说明:函数strcpy把src指向的串(包括空字符)复制到dest指向的数组中。如果复制发生在两个重叠的对象中,则这种行为未定义,其中如果中间字符遇到'\0'停止复制。返回值:函数strcpy返回dest的值。举例:#include<stdio...原创 2019-07-23 14:24:53 · 604 阅读 · 0 评论 -
Linux下C语言编程实现sleep函数
https://blog.csdn.net/he_shuai20/article/details/72904545记录一下大佬的思想。原创 2019-07-08 08:59:12 · 2301 阅读 · 0 评论 -
Linux下C语言函数指针
C语言允许函数的返回值是指针类型,我们把这个函数称为指针函数,举例:#include<stdio.h>int *compute(int *a,int *b){ if(*a > *b) return a; else return b;}int main( int argc , char *argv[] ) { int a = 1; int b ...原创 2019-07-07 16:43:15 · 396 阅读 · 0 评论