C
shuizhizhiyin
这个作者很懒,什么都没留下…
展开
-
define 中#和##的用法
define 中#和##的用法 ##是一个连接符号,用于把参数连在一起 #是“字符串化”的意思。出现在宏定义中的#是把跟在后面的参数转换成一个字符串#define paster( n ) printf( "token " #n" = %d\n ", token##n ) 所以paster(9);就是相当于 printf("token 9 = %d\n",token9);转载 2016-04-26 08:59:39 · 386 阅读 · 0 评论 -
Linux 创建子进程函数 --- fork
一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来转载 2017-11-10 14:10:27 · 864 阅读 · 0 评论 -
pthread_cond_wait()用法分析
很久没看APUE,今天一位朋友问道关于一个mutex的问题,又翻到了以前讨论过的东西,为了不让自己忘记,把曾经的东西总结一下。先大体看下网上很多地方都有的关于pthread_cond_wait()的说明: 条件变量 条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(转载 2017-06-09 18:49:42 · 289 阅读 · 0 评论 -
GCC 编译使用动态链接库和静态链接库的方法
GCC 编译使用动态链接库和静态链接库的方法根据链接时期的不同,库又有静态库和动态库之分,有别于静态库,动态库的链接是在程序执行的时候被链接的1 库的分类根据链接时期的不同,库又有静态库和动态库之分。静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行。有转载 2017-04-20 16:09:25 · 1675 阅读 · 0 评论 -
分割字符串
一、通过将分割后的字符串拷贝到一个二维数组中,函数声明如下:int SplitString(char *pInStr, int nSep, char ppRes[][MAX_FIELD_LEN+1], int nMaxNum);二、通过将源串在分割符处做处理,将分割符置成0;定义一个二级指针指向一阶指针数组,每个数组元素源指向源串每一小段的首地址。如下int SplitSt原创 2017-03-15 11:36:18 · 255 阅读 · 0 评论 -
makefile用法用例与注意事项 .
一、makefile简介定义: makefile定义了软件开发过程中,项目工程编译链、接接的方法和规则。产生: 由IDE自动生成或者开发者手动书写。作用: Unix(MAC OS、Solaris)和Linux(Red Hat、Ubuntu、SUSE)系统下由make命令调用当前目录下的makefile文件执行,可实现项目工程的自动化编译。二、语法规则target:prere转载 2017-01-25 10:48:40 · 2607 阅读 · 1 评论 -
编译链接简介及makefile书写<一>
编译:无论是C、C++等,首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile)。 # 编译器需要的是语法的正确,函数与变量的声明的正确,对于后者,通常是你需要告诉编译器头文件的所在位置(头文件中应该只是声明,而定义应该放在C/C++文件中)。 链接:把大量的Object转载 2017-01-11 10:25:05 · 444 阅读 · 0 评论 -
makefile菜鸟入门
转自:http://my.oschina.net/u/1413984/blog/199029 Makefile有三个非常有用的变量。分别是$@,$^,$发表于2年前(2014-02-12 15:43) 阅读(9199) | 评论(0)2人收藏此文章, 我要收藏赞0转载 2016-04-25 15:08:17 · 19323 阅读 · 0 评论 -
Linux下GDB调试工具使用
GDB是一套字符界面的程序集,可以用它在linux上调试C和C++程序,它提供了以下的功能:1 在程序中设置断点,当程序运行到断点处暂停2 显示变量的值,可以打印或者监视某个变量,将某个变量的值显示出来3 单步执行4 运行时修改变量的值5 跟踪路径6 线程切换等等 下面以以下程序为例当我们要使用GDB进行程序的调试时,在用GCC编译时需要加上-g,如下:转载 2016-05-06 14:33:27 · 314 阅读 · 0 评论 -
C语言数据结构学习网站
http://c.biancheng.net/cpp/u/shuju/转载 2016-04-29 19:48:53 · 832 阅读 · 0 评论 -
gcc 编译安装
gcc GMP MPFR MPC 首先在配置gcc的过程中会出现错误:gcc configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+说明要安装gcc需要GMP、MPFR、MPC这三个库,可从ftp://gcc.gnu.org/pub/gcc/infrastructure/下载相应的压缩包。转载 2016-04-28 10:58:38 · 592 阅读 · 0 评论 -
C++ 使用C库 extern "C"
void foo( int x, int y ); 该函数被C编译器编译后在符号库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字试想这样的情况:一个库文件已经用C写好了而且运行得很良好,这个时候我们需要使用这个库文件,但是我们需要使用C++来写这个新的代码。如果这个代码使用的是C++的方式链接这个C库文件的话,那么就会出现链接错误.我们来看一段代码:首先转载 2016-04-28 09:48:17 · 800 阅读 · 0 评论 -
【Linux】文件中符号分析命令strings 和 nm
strings 查找对象文件二进制文件中的可打印字符串 vdir显示详细的目录列表. 与ls -l的效果相似. nm(1)命令可以报告库的符号列表,对于查看库的相关信息是一个不错的工具strings一.简介:显示文件中的可打印字符二.用法strings [option(s)] [file(s)]选项说明:-a – –all 扫描整个文件而不是只扫描目标文件初始化转载 2016-04-28 09:33:36 · 1176 阅读 · 0 评论 -
数组指针和指针数组
转自:http://www.cnblogs.com/Romi/archive/2012/01/10/2317898.html这两个名字不同当然所代表的意思也就不同。我刚开始看到这就吓到了,主要是中文太博大精深了,整这样的简称太专业了,把人都绕晕了。从英文解释或中文全称看就比较容易理解。指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针数组指针:a转载 2016-04-25 21:03:34 · 243 阅读 · 0 评论 -
C语言实现状态设计模式
C语言实现状态设计模式c(20) 作者同类文章X版权声明:本文为博主原创文章,未经博主允许不得转载。#include #include #include #ifndef VIRTUAL#define VIRTUAL#endif#ifndef DELETE#define DELET转载 2016-04-26 10:36:27 · 655 阅读 · 0 评论 -
Linux环境下段错误的产生原因及调试方法小结 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是
Linux环境下段错误的产生原因及调试方法小结最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决。1. 段错误是什么一句话来说,转载 2017-11-28 14:10:13 · 504 阅读 · 0 评论