现在位置: 首页 > 自动控制 > 工业·编程 > 文章
2012-07-14 21:24 工业·编程 ⁄ 共 929字 暂无评论
    typedef是相当于重新定义一种类型,而define仅仅是简单的字符串替换.常用的陷阱是使用define来使用多个变量的替换,容易出错。 举个例子: 1.#define int * PINTA 2.typedef int * PINTB 使用上边的两种例子来定义两个变量 3.PINTA a,b; 4.PINTB c,d;     第3行中其实a的类型是int *,而b的类型是int,解释一下:在看到define的时候只要把define指定的内容按照原来的情况直接复制下来看结果...
阅读全文
2012-07-14 21:19 工业·编程 ⁄ 共 501字 暂无评论
    先看一个例子: typedef int  (*pFun)(int a, int b); pFunp FunTest;     在上边的代码中,初看会使人误解,怎么能使用函数指针pFun来声明一个类型呢?相信很多人和我都有这样同样的感受。我就先从typedef说起,使用typedef能定义新的类型 比如:     typedef int int_32;     这里int_32就是一个新的类型,虽然这个类型和int是一样的,那我们就可以将ty...
阅读全文
2012-07-14 06:30 工业·编程 ⁄ 共 2045字 暂无评论
使程序实现的逻辑更加清晰,可读性强。 使多人合作开发的分工更加明确,容易控制。 能充分利用可以重用的代码。 抽象出可公用的模块,可维护性强,以避免同一处修改在多个地方出现。 系统运行可方便地选择不同的流程。 可基于模块化设计优秀的遗留系统,方便的组装开发新的相似系统,甚至一个全新的系统。     在软件高层设计中,如何分解模块是首要考虑的问题。目前业界公认模块划分要按照“高内聚,低耦...
阅读全文
DLL的动态链接有两种方法。一种是加载时动态链接(Load_time dynamic linking)。Windows搜索要装入的DLL时,按以下顺序:应用程序所在目录→当前目录→Windows SYSTEM目录→Windows目录→PATH环境变量指定的路径。 前天看到这几句,突然设计出一道自认绝妙的笔试题: "如果采用加载时动态链接的方式,Windows搜索要装入的DLL采用怎样的顺序?" 这个是基础题,估计你很容易答出(答案就是上面的)。呵呵,我还有后着呢...
阅读全文
2012-07-13 22:53 工业·编程 ⁄ 共 4741字 暂无评论
概述 在前面的安全编码实践的文章里,我们讨论了GS编译选项和数据执行保护DEP功能。 结论是GS和DEP可以有效的缓解缓存溢出类型的安全漏洞的危害。关于这个结论,有两个大家需要值得注意的地方。 第一:GS和DEP是缓解(mitigation)措施。也就是说,代码本身仍然存在着安全漏洞,只是由于GS和DEP降低了其危害程度。 第二:GS和DEP存在其自身的局限性。例如,GS不是对每一个函数都适用,而DEP则需要一定的硬件支持。 那么,一个...
阅读全文
2012-07-13 22:42 工业·编程 ⁄ 共 3683字 暂无评论
开发环境 –Turbo c DOS时代c语言开发的经典工具,目前适合两类人使用:c语言beginner(尤其是学生一族),具有怀旧情节的专业人士:) –Visual C++ 6.0/7.0 稳定而强大的IDE开发环境,具有丰富的调试功能,定制宏的功能也是其一大特色。Microsoft的经典之作,功能强大自不必言说。附带的一些工具也很不错,比如:Spy++。但编译器较之同类,支持c++标准的程度不够好,尤其6.0及以前的版本。 –BCB Borland的C++ Builder是可...
阅读全文
在C语言函数使用中函数参数的传递是单值转递,即把实参传递给形参,就是把实参复制一份传给形参。如何证明这一点呢?我想到了一个方法,就是在调用函数和被调用函数都输出实参和形参的地址。如果地址一致那么就是双向传递,如果地址不一致,就是单向传递。 例程如下: #include <iostream.h> void Fun(int a,int b) { cout<<&a<<endl; cout<<&b<<endl; } int main(void) { int a; int b;...
阅读全文
2012-07-13 22:31 工业·编程 ⁄ 共 413字 暂无评论
也许只有实践才知道自己的C语言基础有多薄弱。今天在VC知识库论坛上问了一个弱弱的问题。 我在一个类里声明: enum { sbf=1024*63 }; char m_cBuffer[sbf]; 然后在构造函数里初始化: m_cBuffer[sbf] = {'/0'}; 编译时出现了这些错误: syntax error : '{' missing ';' before '{' missing ';' before '}' 之后我将这个初始化语句改为memset(m_cBuffer,'/0',sbf);就没有了错误。 为什么不能像...
阅读全文
2012-07-13 22:27 工业·编程 ⁄ 共 4389字 暂无评论
指针是C语言中的精髓。《高质量C++编程指南》的作者林锐就曾说过:不会正确使用指针,肯定算不上是合格的程序员。昨晚我思考了一宿,自认找到了理解指针的正确途径。本文试图通过探究指针和数组的关系去研究指针。 一般的C语言教科书上都会有这样的话:指针就是地址,数组名就是指针的首地址。这些不能不说是错误的,但是却没有深入进去,学生很难有较深的理解。 我认为从本质上看,数组是一个单独的内存块,指针是单独一个内存...
阅读全文
比如A类有一个成员是B类对象,B类有一个成员是A类指针,该怎样包含头文件呢?如果写互相包含头文件,会出现下面的错误: error C2143: 语法错误: 缺少“;”(在“*”的前面) 我总结的一个办法是: 正确的做法 在A.h中 #inclue “B.h” 在B.h中B类的定义前面添加这样一句: Class A;     类的前置声明和包含头文件的区别在于类的前置声明是告诉编译器有这种类型,但是它没有告诉编译器这种类型的大小、成员函数和数据成...
阅读全文