![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【C语言】
duanbingnan
这个作者很懒,什么都没留下…
展开
-
C语言之typedef的问题
1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。 至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。 2. typedef &转载 2007-10-30 10:38:00 · 520 阅读 · 0 评论 -
关于const的用法
const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰的对象为常量(immutable)。我们来分情况看语法上它该如何被使用。1、函数体内修饰局部变量。例:void func(){const int a=0;}首先,我们先把const这个单词忽略不看,那么a是一个int类型的局部自动变量,我们给它赋予初始值0。然后再看const.const作为一个类型限定词,和int有相同转载 2007-12-04 14:01:00 · 712 阅读 · 0 评论 -
C/C++语言误区之:void main()
C/C++语言误区之:void main( )作者:antigloss 很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) 。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main( ) { /* ... */ } is转载 2007-12-04 12:06:00 · 1217 阅读 · 1 评论 -
C语言void及void指针深层探索
1.概述 本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义:void a; 这行语句编译时会出错,提示“illeg转载 2007-12-04 10:18:00 · 706 阅读 · 0 评论 -
如何在多源文件程序中合理定义全局变量
众所周知,全局变量应该是得到内存分配且可以被其他模块通过C语言中extern关键字调用的变量。因此,必须在 .C 和 .H 文件中定义。这种重复的定义很容易导致错误。以下讨论的方法只需用在头文件中定义一次。虽然有点不易懂,但用户一旦掌握,使用起来却很灵活。表1.2中的定义出现在定义所有全局变量的.H头文件中。原创 2007-11-07 10:53:00 · 1650 阅读 · 0 评论 -
再论C语言之typedef的用法
typedef使用大全1(数组)typedef到处都是,但是能够真正懂得typedef使用的不算太多。对于初学者而言,看别人的源码时对到处充斥的typedef往往不知所错,而参考书又很少,所以在此给出一个源码,供大家参考 #include #include /* 避免Visual C的for与标准for的不同 */#define for if (0); else for转载 2007-11-04 18:40:00 · 1176 阅读 · 0 评论 -
C语言中#define的用法
转自:http://www.dingge.com/main/article.asp?id=10今天整理了一些#define的用法,与大家共享!1.简单的define定义#define MAXTIME 1000 一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写if(i编译器在处理这个代码之前会对MAXTIME进行处理替换为1000。这样的定义看起来类似于普转载 2007-11-04 18:35:00 · 8863 阅读 · 3 评论 -
软件故障的克星:断言调试
断言调试(Assertive debugging)是利用自带代码对程序进行监控并能确保嵌入式系统性能的新型调试方法。 调试是一门有待进一步深入研究的“艺术”……最有效的调试技术是那些在程序本身基础上设计并构建的技术。现在,许多最优秀程序员都利用近一半的程序对另一半程序进行调试;而用于调试的这一半程序最终将完全被摒弃。出人意料的是,这最终竟也能提高生产效率。 —节选自Donald Knuth的《转载 2007-11-02 13:14:00 · 1104 阅读 · 0 评论 -
C语言中__T的作用
如果定义了__UNICODE标识符,那么一个称作__T的宏就定义如下: # define __T(x) L##x 这是相当晦涩的语法,但却属于C预处理的ANSI C标准.这一对##称为"粘贴符号",它将字母L添加到宏参数上.因此,如果宏参数是"Hello!",则L##x就是L"Hello!". 如果没有定义_UNICODE标识符,则__T宏只简单地定义如下: #转载 2007-10-31 10:10:00 · 7377 阅读 · 1 评论 -
利用__FILE__, __LINE__, __FUNCTION__等宏跟踪调试程序的运行
利用__FILE__, __LINE__, __FUNCTION__跟踪调试程序作为一个Linux系统下的C程序员,你可能发现调试程序是个比较麻烦的工作,虽然已经有gdb,kgdb等专业的调试软件,但如果对这些软件运用不熟练是根本达不到调试程序找出bug的目的的。又或者你对gdb已经很熟了,但运行gdb开始调试后在哪里设置断点成了你头痛的问题?当然,你可以从程序开始就以单步运行step by st转载 2007-10-30 10:35:00 · 1705 阅读 · 0 评论 -
C语言预处理指令
一、预处理的由来:在C++的历史发展中,有很多的语言特征(特别是语言的晦涩之处)来自于C语言,预处理就是其中的一个。C++从C语言那里把C语言预处理器继承过来(C语言预处理器,被Bjarne博士简称为Cpp,不知道是不是C Program Preprocessor的简称)。二、常见的预处理功能:预处理器的主要作用就是把通过预处理的内建功能对一个资源进行等价替换,最常见的预处理有:文件包含,条件转载 2007-10-30 10:43:00 · 1204 阅读 · 0 评论 -
C语言中宏的使用
水平不高不低的C++程序员最喜欢挂在嘴上的一句话就是:C宏,万恶之首,错误的开端,应该被废弃。 请注意,我用了一句不敬的修饰语“水平不高不低的”。为什么这么说?因为水平低都插不上话,都在在静静地听老前辈布道呢。水平高的,比如Bane Stroustrup老人家,也只是说若干种场合下C++语言能够提供比C macro更好的解决方案,而没有完全否定C macro的价值。但是话就怕传来传去,一传就转载 2007-10-30 10:42:00 · 843 阅读 · 0 评论 -
考查嵌入式C开发人员的最好的0x10道题
对于大多数人,我们预期你可能答错 3) 4) 15)题,所以答错3道以内的,我们认为你很棒答错5道题以内,我们认为你还不错(你还可能答错第9题)如果你有6道以上的题目不能答对,基本上我们都不好说什么了....约定: 1) 下面的测试题中,认为所有必须的头文件都已经正确的包含了 2)数据类型 char 一个字节 1 byte int 两个字节 2转载 2007-12-20 11:04:00 · 1101 阅读 · 0 评论