编程语言---C
辛星
生命不息,奋斗不止。
展开
-
c中的main函数
C的设计原则是把函数作为程序的构成模块。main()函数称之为主函数,一个C程序总是从main()函数开始执行的。一、main()函数的形式在最新的 C99 标准中,只有以下两种定义方式是正确的:int main( void ) /* 无参数形式 */{ ... return 0;}int main( int argc, char *argv[转载 2015-12-28 09:30:31 · 596 阅读 · 1 评论 -
gcc的基本操作
1简介GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 GNU Comp转载 2015-12-26 16:14:19 · 695 阅读 · 0 评论 -
一篇很不错的介绍静态连接和动态链接的文章
确切来说,这是我转载的别人转载的一篇文章,我转载自:http://blog.csdn.net/ytz_linuxer/article/details/4740512 。Linux下的.so是基于Linux下的动态链接,其功能和作用类似与windows下.dll文件。下面是关于.so的介绍:一、引言通常情况下,对函数库的链接是放在编译时期(compile time)完转载 2016-01-28 23:57:14 · 1534 阅读 · 0 评论 -
转载的一篇整型溢出的文章
整型溢出有点老生常谈了,bla, bla, bla… 但似乎没有引起多少人的重视。整型溢出会有可能导致缓冲区溢出,缓冲区溢出会导致各种黑客攻击,比如最近OpenSSL的heartbleed事件,就是一个buffer overread的事件。在这里写下这篇文章,希望大家都了解一下整型溢出,编译器的行为,以及如何防范,以写出更安全的代码。什么是整型溢出C语言的整型问题相信大家并不陌生了转载 2016-01-30 23:05:34 · 476 阅读 · 0 评论 -
转载的一篇关于头文件和库文件路径的文章
本文详细介绍了linux 下gcc头文件指定方法,以及搜索路径顺序的问题。另外,还总结了,gcc动态链接的方法以及路径指定,同样也讨论了搜索路径的顺序问题。本文包含了很多的例子,具有很强的操作性,希望读者自己去走一遍。一.#include #include #include “”先到源文件所在文件夹去找,然后再到系统指定的某些目录中去找某些头文件。二.gcc指定头文件的三种转载 2016-01-31 00:01:36 · 429 阅读 · 0 评论 -
使用eclipse for c++的一个报错问题
有时候我们使用eclipse for c++来编辑c或者cpp代码的时候,如果我们是直接从别的地方copy代码过来的话,可能会报很多错误,一般来说,只要没有错误,执行一下保存就会错误消失了。 其实一般来说一个好习惯就是,写完#include预处理后保存一次文件,这样之后的输入就不会提示不正确的错误了。因为它不能像写Java一样一边写一边就可以检查语法错误,CDT的语法检测要先经原创 2016-02-01 15:47:30 · 614 阅读 · 0 评论 -
关于'for' loop initial declaration used outside C99 mode的说明
出现这种问题的主要原因是c99是允许在for循环中声明变量的,但是如果使用的标准为c99之下的话,则不允许这么做,通常我们可以在编译的时候加上-std=c99即可。 它们的区别是: (1)在for循环中声明变量: for(int i = 0;i (2)在for循环外声明变量: int i; for( i = 0; i原创 2016-02-22 14:03:35 · 23662 阅读 · 0 评论 -
转载一篇对C语言中可变参数的文章
尊重原创,地址为:http://www.cnblogs.com/hanyonglu/archive/2011/05/07/2039916.html介绍这两个宏之前先看一下C中传递函数的参数时的用法和原理: 1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表void foo(...);void foo(parm_list转载 2016-03-20 11:41:17 · 311 阅读 · 0 评论 -
一个内存泄露检测工具
如果我们使用IDE开发C程序的话,很多IDE都是集成了这个功能的,当然也有很多很不错的单独用来检测内存泄露的工具,比如MallocDebug,Valgrind,Kcachegrind,dmalloc,NuMega,BoundsCheck,ParaSoft ,Insure++都是不错的选择。 这里简要介绍下valgrind吧,这里是它的官方网站:http://valgrind.org/,对于原创 2016-02-23 17:50:05 · 483 阅读 · 0 评论 -
一篇还不错的介绍头文件的小文章
扩展名为.h的文件,在C语言中被称为header file, 也就是头文件。头文件的数据格式就是普通的文本文件,可以通过新建文本文件(txt),再把扩展名改为.h的方式创建,在此不赘述。一、头文件内容格式。头文件内容并没有固定的格式要求,不过一般为防止嵌套引用给编译器带来死锁或者没必要的开销,一般约定整个头文件中所有内容在一个条件编译下,即如下格式:#ifndef 宏名转载 2016-01-27 14:26:50 · 760 阅读 · 0 评论 -
一篇还不错的常见文件后缀名列举
(1) .dll .obj .lib使用在windows平台下。 .dll:动态链接库,作为共享函数库的可执行文件。 .obj:目标文件,相当于源代码对应的二进制文件,未经重定位。 .lib:可理解为多个obj的集合,本质与.obj相同。 (2) .so .o .a使用在linux平台下。 .so:(sha转载 2016-01-26 18:20:43 · 670 阅读 · 0 评论 -
一篇还不错的介绍linux下的链接库的文章
1、Linux下创建动态链接库在使用GCC编译程序时,只需加上-shared选项即可,这样生成的执行程序即为动态链接库。例如有文件:hello.c x.h main.c[plain] view plain copy编译:gcc hello.c -fPIC -o libhello.so 其中-fPIC选项的作用是:表示编译为位转载 2016-01-26 18:17:52 · 445 阅读 · 0 评论 -
c语言编译时的一个问题
有时候会报错如下:warning: incompatible implicit declaration of built-in function ‘printf’ 其实就是不明确的内建函数printf,这种情况下多数是没有包含带有printf函数的头文件,通常在前面加上#include即可原创 2016-01-02 10:59:23 · 825 阅读 · 0 评论 -
c语言中的布尔类型
在C语言标准(C89)没有定义布尔类型,所以C语言判断真假时以0为假,非0为真。所以我们通常使用逻辑变量的做法://定义一个int类型变量,当变量值为0时表示false,值为1时表示trueint flag;flag = 0;//......flag = 1;if( flag ){//......} 但这种做法不直观,而且没有明确flag转载 2016-01-03 14:10:10 · 1189 阅读 · 0 评论 -
转载的一篇有关gdb的不错的文章
GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能: 1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程转载 2016-01-25 00:53:12 · 373 阅读 · 0 评论 -
debuginfo-install glibc-2.12-1.166.el6_7.3.x86_64类似的问题
在使用gdb进行调试的时候,可能会出现如下问题:debuginfo-install glibc-2.12-1.166.el6_7.3.x86_64,其实碰到此类问题继续continue就可以了,debuginfo通常是调试glibc本身使用。 通常我们的解决方式如下: (1)如果没有debuginfo-install命令的话,使用yum install yum-u原创 2016-01-25 01:30:39 · 2406 阅读 · 0 评论 -
转载的另一篇不错的介绍gdb的文章
1 简介2 生成调试信息3 启动GDB 的方法4 程序运行上下文 4.1 程序运行参数 4.2 工作目录 4.3 程序的输入输出5 设置断点 5.1 简单断点 5.2 多文件设置断点 5.3 查询所有断点6 观察点7 条件断点8 维护停止点9 为停止点转载 2016-01-25 01:33:26 · 422 阅读 · 0 评论 -
一篇优秀的gdb的总结
概述:GDB是linux下调试程序的神器,做为linux程序员,如果不能熟练的使用GDB进行程序调试,那将是很失败的事情。强大的功能使GDB的使用也变得比较复杂,如果是初学者肯定会比繁杂的命令吓到。下面是整理的一些我认为会比较有帮助的部分。下文中以">"开头的命令是linux的shell命令,以"(GDB)"开头的则是GDB内部命令。 0.转储功能(core dump): (1)转载 2016-01-25 22:24:14 · 2041 阅读 · 0 评论 -
转载一篇来自川山甲的关于make的文章
介绍 一般程序都是由多个源文件编译链接而成的,这些源文件的处理步骤通常由Makefile文件管理。 索引 1、用途 1)准备 2)方便使用 3)原理 4)格式 5)案例2、规则3、Makefile中的变量 1)作用 2)语法 3)案例4、伪目标5、条件语句6、调试ma转载 2016-01-25 23:53:27 · 349 阅读 · 0 评论 -
一篇还不错的介绍make的文章
在GNU中提供了一个用于管理多个C源代码文件的项目管理工具,用户只需按照一定的语法规则编写这个Makefile文件。输入make命令,系统会自动的根据当前文件的修改情况确定哪些文件需要重编译,一旦文件被修改,make工具只会执行依赖于该文件的一系列规则,这样节省了整个编译和链接时间。1.1 Make规则Makefile是由若干规则组成,每个规则定义了生成对应目标文件和它的依赖关系、转载 2016-01-26 00:01:52 · 477 阅读 · 0 评论 -
转载一篇关于函数指针的文章
最近在看posix实时信号时,遇到一处函数是如此定义的:[cpp] view plain copytypedef void sigfunc_rt(int, siginfo_t *, void *); 在我常规理解里,一般定义一个函数类型都是这样定义的:[cpp] view plain copy转载 2016-03-21 15:02:24 · 308 阅读 · 0 评论