编程语言相关
EddyLiu-csdn
博客已迁移至( https://liucaiquan.site/about/)
展开
-
如何给Make命令来传递参数
译系统的时候,我们一般只要简单的输入make执行就可以了。但有时候,我们还是需要让make命令带入一些参数给makefile脚本。比如,你在代码里面需要定义一个宏DEBUG来打开调试开关,代码如下: int main() { int i=9; #ifdef DEBUG i=1; #else转载 2012-11-23 23:15:01 · 19794 阅读 · 0 评论 -
int main(int argc,char* argv[])详解
argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数,比如: int main(int argc, char* argv[]) { int i;转载 2011-07-16 22:54:05 · 474 阅读 · 0 评论 -
C语言中的位域的使用
一、位域 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对转载 2013-10-15 13:30:03 · 680 阅读 · 0 评论 -
static用法小结
关键字static有一段不寻常的历史。(一)起初,C引入关键字static是为了表示退出一个块儿后依然存在的局部变量。在这种情况下术语“static”是有意义的:变量一致存在,当再次进入该块时仍然存在。如:int add(){ static a=1; return a++;}void main(){ int b=0; int i; for(i=0;i<原创 2013-05-15 14:37:17 · 962 阅读 · 2 评论 -
C语言中的选择判断语句
在C语言中常见的选择判断语句为 if - else 形式,如:int a=0;if(a==0) printf("a=0\n");else printf("a!=0\n");或者 switch - case 形式,如:int a=0;switch(a) case 0: printf("a=0\n"); break; case 1:原创 2013-01-02 17:17:14 · 17644 阅读 · 1 评论 -
指针和二维数组
概括的说,指针其实就是可变数组的首地址,说是可变数组,是 指其包含内容的数量的可变的,并且是可动态申请和释放的,从而充 分节约宝贵的内存资源。我一向喜欢一维数组,除非万不得已,我一 般是不用二维数组的,多维的则更是很少涉足了。因为一维简单,容 易理解,而用指针指向的多维数组就具有相当的复杂性了,也因此更 具有讨论的必要。 闲话少说,这里我就以三个二维数组的比转载 2011-06-15 21:52:00 · 574 阅读 · 0 评论 -
在C++中实现变长数组
1.变长一维数组 这里说的变长数组是指在编译时不能确定数组长度,程序在运行时需要动态分配内存空间的数组。实现变长数组最简单的是变长一维数组,你可以这样做: //文件名: array01.cpp #include using namespace std; int main()转载 2011-06-15 17:05:00 · 789 阅读 · 0 评论 -
在预编译阶段打印提示信息
假设程序中有如下的语句:int a;#ifdefin _Da=1;#endif假设工程中有很多文件,不清楚_D到底有没有定义,当然也不希望在程序执行的时候,通过看执行结果的方式来查看_D有没有定义。那么,有没有可能在#ifdef和#endif语句间插入特殊的编译指令,在预编译阶段或编译阶段通过打印提示信息来断定_D的定义情况呢?答案是肯定的。解决方案一:原创 2013-01-01 10:47:19 · 6219 阅读 · 1 评论 -
__attribute__机制介绍
1. __attribute__GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)__attribute__前后都有两个下划线,并且后面会紧跟一对原括弧,括弧里面是相应的__attribu转载 2012-11-21 19:31:02 · 509 阅读 · 0 评论 -
宏定义的一些特殊用法
1、 有参宏定义中#的用法 #define STR(str) #str #用于把宏定义中的参数两端加上字符串的"" 比如,这里STR(my#name)会被替换成"my#name" 一般由任意字符都可以做形参,但以下情况会出错: STR())这样,编译器不会把“)”当成STR()的参数。 STR(,)同上,编译器不会把“,”当成STR的参数。 STR(A,B)如转载 2012-11-21 19:26:21 · 881 阅读 · 0 评论 -
apt-get命令工作原理简介
众所周知,在linux操作系统下,利用apt-get来安装软件是非常方便的。只要一个sudo apt-get install 软件名;就可以轻易的解决软件的安装,最关键的是他可以解决其中存在的各种复杂的依赖关系,让你不用为此头疼,而在apt-get出现之前,利用dpkg或者更早之前的./configure;make;make install来安装软件真是无法想象,安装完软件A,提示你要安装软件B,转载 2012-11-29 17:36:28 · 2404 阅读 · 0 评论 -
find和grep命令
在linux中进行文件查找,或者关键字查询是非常常见的,其中最为常见的工具就非find和grep莫属了,下面对于这两个工具的一般用法做简单介绍:findfind自身具有递归性,也就是它能自动查找所在目录,同时递归查询所在目录的子目录,具体用法如下:#find -name ex:#find ./ -name a.outgrep自身不具有递归性,需要特别指示(用-r参数),否则只原创 2013-01-02 17:28:17 · 1371 阅读 · 0 评论 -
Makefile中指定目标(MAKECMDGOALS)
有一个 make 的环境变量叫“MAKECMDGOALS”,这个变量中会存放你所指定的终极目标的列表,如果在命令行上,你没有指定目标,那么,这个变量是空值。这个变量可以让你使用在一些比较特殊的情形下。比如下面的例子:sources = foo.c bar.c ifneq ( $(MAKECMDGOALS),clean) include $(sources:.c=.d) endi原创 2012-11-23 18:58:10 · 20295 阅读 · 4 评论 -
makefile中for的用法以及$与$$的区别
$$表示$,用来shell下引用变量,而$A或者$(A)则是Makefile的变量。下面举例说明:rule_1: for i in 1 2 3 4 5; do echo $(i); done上面的代码不会连续打印 1 2 3 4 5但下面的代码会:rule_1: for i in 1 2 3 4 5; do echo $$(i); done原创 2012-11-22 10:07:46 · 13844 阅读 · 4 评论 -
Makefile之wildcard
1、wildcard : 扩展通配符2、notdir : 去除路径3、patsubst :替换通配符例子:建立一个测试目录,在测试目录下建立一个名为sub的子目录$ mkdir test$ cd test$ mkdir sub在test下,建立a.c和b.c2个文件,在sub目录下,建立sa.c和sb.c2 个文件建立一个简单的Makefiles转载 2012-11-22 11:06:57 · 830 阅读 · 0 评论 -
Makefile 中:= ?= += =的区别
总的来说:= 是最基本的赋值:= 是覆盖之前的值?= 是如果没有被赋值过就赋予等号后面的值+= 是添加等号后面的值之前一直纠结makefile中“=”和“:=”的区别到底有什么区别,因为给变量赋值时,两个符号都在使用。网上搜了一下,有人给出了解答,但是本人愚钝,看不懂什么意思。几寻无果之下,也就放下了。今天看一篇博客,无意中发现作者对于这个问题做了很好的解答。解转载 2012-11-22 09:57:15 · 792 阅读 · 0 评论 -
若干Makefile的联合编译
现有如下三个文件文件1://main.c#include#include"sub.h"void main(){ printf("Main fun!\n"); sub_fun();}文件2://sub.hvoid sub_fun();文件3://sub.cvoid sub_fun(){ printf("Sub原创 2011-07-08 22:44:37 · 1000 阅读 · 0 评论 -
Makefile中eval函数用法
函数功能:函数“eval”是一个比较特殊的函数。使用它我们可以在我们的Makefile中构造一个可变的规则结构关系(依赖关系链),其中可以使用其它变量和函数。函数“eval”对它的参数进行展开,展开的结果作为Makefile的一部分,make可以对展开内容进行语法解析。展开的结果可以包含一个新变量、目标、隐含规则或者是明确规则等。也就是说此函数的功能主要是:根据其参数的关系、结构,对它们进行替换展转载 2012-11-22 09:40:18 · 11395 阅读 · 0 评论 -
make clean与make distclean的区别
make clean仅仅是清除之前编译的可执行文件及配置文件。而make distclean要清除所有生成的文件。Makefile 在符合GNU Makefiel惯例的Makefile中,包含了一些基本的预先定义的操作:make 根据Makefile编译源代码,连接,生成目标文件,可执行文件。make clean 清除上次的make命令所产生的object文件(后转载 2011-07-02 11:36:02 · 792 阅读 · 0 评论 -
Perl 作为命令行实用程序
那些将 Perl 用作编程语言的人经常忽视了:Perl 用作命令行操作的快速而又难看的脚本编制引擎时是很有用的。通过命令行,Perl 仅用一行就可以实现大多数其它语言需要数页代码才能完成的任务。跟着 Teodor,他会教给您一些有用的示例。 为了完成这一篇 how-to 文章,您需要在系统上安装 Perl 5.6.0。您的系统最好安装比较新(2000 或更新)的 Linux 或 Unix,但转载 2012-11-21 21:35:57 · 777 阅读 · 0 评论 -
Chmod的用法
chmod 是一条在Unix系统中用于控制用户对文件的权限的命令(change mode单词前缀的组合)和函数。只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式,符号模式指定文件的权限。用法chmod使用语法$ chmod [options] mode[,mode] file1 [file2 ...]使用ls命令的查看文件或目录的属性$ l转载 2013-01-05 11:22:25 · 2390 阅读 · 0 评论 -
segmentation fault
Segment fault 之所以能够流行于世,是与Glibc库中基本所有的函数都默认型参指针为非空有着密切关系的。来自:http://oss.lzu.edu.cn/blog/article.php?uid_7/tid_700.html#comment背景 最近一段时间在linux下用C做一些学习和开发,但是由于经验不足,问题多多。而段错误就是让我非常头痛的一个问题。转载 2011-09-29 10:07:09 · 1317 阅读 · 0 评论