C /CLI
摘要:面对C /CLI,很多人的第一个问题自然是“什么是C /CLI”,我个人喜欢将其看作是位于静态程序设计和动态程序设计之间的一座桥梁。C /CLI这个名称本身就包含着一组术语——而其中最重要的术语却是最不明显的那一个。首先来看第一个术语“C ”,这当然指的是由Bjarne Stroustrup在Bell实验室时发明的C 编程语言。它所支持的是一种为代码执行速度和执行体所占空间所高度优化的静态对象模型。除了堆内存分配以外,它不支持在运行时对应用程序进行任何的更改。它允许我们对底层机器进行无限的访问,但对于正在运行的程序中的活动类型、以及相关的程序基础构造,它的访问能力却非常有限、或者根本就不可能。
阅读全文
posted @
2012-06-29 13:42
carekee
阅读(1482)
推荐(0) 编辑
C/C++ 常见误区
摘要:1.C++虽然主要是以C的基础发展起来的一门新语言,但她不是C的替代品,不是C的升级,C++和C是兄弟关系。没有谁比谁先进的说法,更重要的一点是C和C++各自的标准委员会是独立的,最新的C++标准是C++98,最新的C标准是C99。因此也没有先学C再说C++的说法,也不再(注意这个"不再")有C++语法是C语法的超集的说法。2.C++/CLI和C#是微软的,它们与C和C++没有任何关系,虽然部分语法相似。但哪两种语言不相似呢?都是abc这26个字母。3.不要使用TC/TC++/BC/CB等古老的编译器来学习C/C++,因为它们太古老了,不支持新的C/C++标准。不要使用CB
阅读全文
posted @
2012-06-29 13:41
carekee
阅读(307)
推荐(0) 编辑
C++的多态性实现机制剖析
摘要:1. 多态性和虚函数我们先看一个例子:例1- 1#include <iostream.h>class animal{public: void sleep() { cout<<"animal sleep"<<endl; } void breathe() { cout<<"animal breathe"<<endl; }};class fish:public animal{public: void breathe() { cout<<"fish bubble"<
阅读全文
posted @
2012-06-29 13:40
carekee
阅读(272)
推荐(0) 编辑
如何让应用程序只运行一个实例
摘要:我们在使用《金山词霸》时发现,在《金山词霸》已经运行了的情况下,再次点击《金山词霸》的图标,那么它不会再运行另外一个《金山词霸》,而是将已有的《金山词霸》给激活,始终只能运行一个《金山词霸》的实例。在我们的程序当中如果要实现类似《金山词霸》的功能,就要解决两个问题,首先是要判断该程序已有一个实例在运行,其次是要将已运行的应用程序实例激活,同时退出第二个应用程序实例。对于第一个问题,我们可以通过设置命名互斥对象或命名信标对象,在程序启动的时候检测互斥对象或信标对象,如互斥对象或信标对象已存在,则可以判断此程序已有一个实例正在运行。第二个问题是如何找到已经运行的应用程序实例,如果我们能够找到已运行
阅读全文
posted @
2012-06-29 13:39
carekee
阅读(507)
推荐(0) 编辑
如何在对话框程序中让对话框捕获WM_KEYDOWN消息
摘要:在对话框程序中,我们经常是利用对话框上的子控件进行命令响应来处理一些事件。如果我们想要让对话框(子控件的父窗口)类来响应我们的按键消息,我们可以通过ClassWizard对WM_KEYDOWN消息进行响应,当程序运行后,我们按下键盘上的按键,但对话框不会有任何的反应。这是因为在对话框程序中,某些特定的消息,例如按键消息,它们被Windows内部的对话框过程处理了(即在基类中完成了处理,有兴趣的读者可以查看MFC的源代码),或者被发送给子控件进行处理,所以我们在对话框类中就捕获不到按键的消息了。既然我们知道了这个处理的过程,我们就可以找到底层处理按键消息的函数,然后在子类中重载它,就可以在对话框
阅读全文
posted @
2012-06-29 13:39
carekee
阅读(524)
推荐(0) 编辑
John Carmark密码
摘要:有人在Quake III的源代码里面发现这么一段用来求平方根的代码: /*================SquareRootFloat================*/ float SquareRootFloat(float number) { long i; float x, y; const float f = 1.5F; x = number * 0.5F; y= number; i= * ( long * ) &y; i= 0x5f3759df - ( i >> 1 );//注意这一行 y= * ( float * ) &i; y= y * ( f -
阅读全文
posted @
2012-06-29 13:38
carekee
阅读(333)
推荐(0) 编辑
C++之四书五经(下)
摘要:我在上篇中“盘点”了TCPL和D&E以及入门教程、高效和健壮编程、模板和泛型编程等方面共十几本C++好书。冬去春来,让我们继续C++书籍精彩之旅。标准库当我还在研究院工作时,与同院另外两家研究所合作开发过一个大型水利枢纽调度集成项目。我们三家软件系统之间都要相互通信。在调试通讯模块时,细心的客户(一名好学的系统管理员)发现对于同一通信规约的解释代码,我的不超过30行,而对方的则超过了150行且很难看懂。这位系统管理员很纳闷,我说大家编程风格和习惯不一样,我使用了标准库,而他使用了传统C编程风格以及他所习惯的另外一些技术。别误会!我绝无贬低这位合作伙伴的意思。事实上,我对那些真正有着深厚
阅读全文
posted @
2012-06-29 13:38
carekee
阅读(357)
推荐(0) 编辑
C++之四书五经(上)
摘要:C++是一门广泛用于工业软件研发的大型语言。它自身的复杂性和解决现实问题的能力,使其极具学术研究价值和工业价值。和C语言一样,C++已经在许多重要的领域大获成功。然而,一个不可否认的现实是,在低阶程序设计领域,C++挤压着C同时也在承受着C的强烈反弹,而在高阶程序设计领域,Java和C#正在不断蚕食着C++的地盘。也许C++与C合为一体永远都是一个梦想,也许Java和C#的狂潮终将迫使C++回归本位——回到它有着根本性优势的开发领域:低级系统程序设计、高级大规模高性能应用设计、嵌入式程序设计以及数值科学计算等。果真如此,我认为这未尝不是一件好事。C++吸引如此之多的智力投入,以至于这个领域的优
阅读全文
posted @
2012-06-29 13:36
carekee
阅读(646)
推荐(0) 编辑
API函数大全
摘要:1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接 WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接 WNetEnumResource 枚
阅读全文
posted @
2012-06-29 13:35
carekee
阅读(207)
推荐(0) 编辑
TC2.0中怎样调用汇编程序
摘要:TC是美国BORLAND 公司在IBM PC机上开发的一个高效、优化的C编译程序,它自带高效的全屏幕编辑程序,在集成开发环境下可支持编辑、编译、连接调试和运行等过程连续完成。 TC提供了与汇编语言的接口和在C程序中直接插入汇编指令代码的功能,支持以“远调用”和“近调用”方式来调用使用汇编语言编写的函数。 TC调用汇编语言函数时,对汇编语言的编写要求十分严格,并且对大小写字母也有严格的区分。如果在编写供TC调用的汇编函数时不按照规定好了的格式书写,调用是不会成功的。 下面先举一个在TC中调用汇编函数的例子,然后再详细讲解怎样做才能成功。步聚如下:1、在TC集成环境中编写一个主程序(名为TCMAI
阅读全文
posted @
2012-06-29 13:34
carekee
阅读(414)
推荐(0) 编辑
TC2.0图形函数详解
摘要:第一章 再谈main()主函数 每一C 程序都必须有一main()函数,可以根据自己的爱好把它放在程序的某个地方。有些程序员把它放在最前面,而另一些程序员把它放在最后面,无论放在哪个地方,以下几点说明都是适合的。1. main() 参数在Turbo C2.0启动过程中,传递main()函数三个参数:argc,argv和env。* argc: 整数,为传给main()的命令行参数个数。* argv: 字符串数组。在DOS 3.X 版本中,argv[0] 为程序运行的全路径名;对DOS 3.0 以下的版本,argv[0]为空串("") 。argv[1] 为在DOS 命令行中执行
阅读全文
posted @
2012-06-29 13:34
carekee
阅读(1848)
推荐(0) 编辑
用C编写Windows服务程序的五个步骤
摘要:Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务。为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择。本文将建立并实现一个简单的服务程序,其功能是查询系统中可用物理内存数量,然后将结果写入一个文本文件。最后,你可以用所学知识编写自己的 Windows 服务。 当初我写第一个NT 服务时,我到 MSDN 上找例子。在那里我找到了一篇 Nigel Thompson 写的文章:“Creating a Simple Win32 Service in C++”,这篇文章附带一个 C++ 例子。虽然这篇文章很好地解释了服务的开发过程,但是,我仍然感觉缺少我需.
阅读全文
posted @
2012-06-29 13:33
carekee
阅读(351)
推荐(0) 编辑
大数阶乘
摘要:C++代码如下:#include <algorithm>#include <vector>#include <cstdio>using namespace std;typedef unsigned int Type;enum{ BASE_DATA = 10000, MAX_NUM = 100000 , MAX_SIZE = MAX_NUM+1000};struct MulOpt {Type data1;MulOpt(Type x):data1(x){}inline Type operator()(Type y){return data1*y;}};struc
阅读全文
posted @
2012-06-29 13:33
carekee
阅读(231)
推荐(0) 编辑
随机加密程序
摘要:利用异或的性质来对文件进行加密:c=a^bc^b=a#include "stdio.h"#include "stdlib.h"void main(int argc,char *argv[]){FILE *fp1,*fp2;char c,ch;long j;if(3!=argc){printf("Command error/n");exit(1);}if((fp1=fopen(argv[1],"rb"))==NULL){printf("Can not open the source file/n"
阅读全文
posted @
2012-06-29 13:32
carekee
阅读(236)
推荐(0) 编辑
Turbo C 程序设计初步
摘要:本文要介绍Turbo C程序设计的基本步骤及如何编译、调试和运行源程序。并给出Turbo C的常用编辑命令。最后介绍Turbo C编译、连接和运行时的常见错 误。 一、Turbo C程序设计基本步骤 程序设计方法包括三个基本步骤: 第一步: 分析问题。 第二步: 画出程序的基本轮廓。 第三步: 实现该程序。 3a. 编写程序 3b. 测试和调试程序 3c. 提供数据打印结果 下面, 我们来说明每一步的具体细节。 第一步: 分析问题 在这一步, 你必须: a. 作为解决问题的一种方法, 确定要产生的数据(输出)。作为这一子步的 一部分, 你应定义表示输出的变量。 b. ...
阅读全文
posted @
2012-06-29 13:31
carekee
阅读(502)
推荐(0) 编辑
C语言漫谈
摘要:C语言是被使用的最广泛的一种高级语言,其历史相当久远。而其发展也相当神速, 从当初的标准C发展到后来的C++。其性能也发生了很多很大的变化。C语言拥有众多的编译器,其中不乏优秀者众多。从当初的Turbo C引入集成化编译环境后,C语言就以其灵活性,高效率,可移植性好深入人心。后来发展起来的C++,Java 等语言,无不是在 其基础进行扩充,使其更为灵活,更方便易用。新的C++编译器引入了很多特色。使得C语言语法更加灵活。摒弃了标准C对语法死板的要求。使得编程随心所欲。这里推荐 Borland C++ 和Visual C++.当然这是指Dos应用,如果开发Windows应用程序,那么当 首推Vi
阅读全文
posted @
2012-06-29 13:31
carekee
阅读(288)
推荐(1) 编辑
Linux下面如何进行C语言编程
摘要:1.源程序的编译 在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器.下面我们以一个实例来说明如何使用gcc编译器. 假设我们有下面一个非常简单的源程序(hello.c): intmain(intargc,char**argv) { printf("HelloLinux/n"); } 要编译这个程序,我们只要在命令行下执行: gcc-ohellohello.c gcc编译器就会为我们生成一个hello的可执行文件.执行./hello就可以看到程序的输出结果了.命令行中gcc表示我们是用gcc来编译我们的源程序,-o选项表示我们要求编译器给我们输出的
阅读全文
posted @
2012-06-29 13:31
carekee
阅读(780)
推荐(0) 编辑
Turbo C(V2.0)使用指南
摘要:在开始看本文以前,我先说明一下C语言的安装和使用中最应该注意的地方:许多网友在下载Turbo C 2.0和Turbo C++ 3.0后,向我问得最多的是在使用过程中碰到如下问题: 1)出现找不到 stdio.h conio.h等include文件;2)出现cos.obj无法连接之类的错误 这些问题是由于没有设置好路径引起的,目前下载的TC2,TC3按安装分类大概有两种版本:一是通过install安装,这类应该已经设置好了路径;二是直接解压后建立TC.EXE的快捷方式,在WINDOWS下双击即可运行(DOS下直接运行TC.EXE),目前国内大多为这种,因此下载使用前请注意路径设置:设置方法为..
阅读全文
posted @
2012-06-29 13:30
carekee
阅读(1297)
推荐(0) 编辑
Turbo C(V2.0)编译错误信息
摘要:说明:Turbo C 的源程序错误分为三种类型:致命错误、一般错误和警告。其中,致命错误通常是内部编译出错;一般错误指程序的语法错误、磁盘或内存存取错误或命令行错误等;警告则只是指出一些得怀疑的情况,它并不防止编译的进行。 下面按字母顺序A~Z分别列出致命错误及一般错误信息,英汉对照及处理方法:(一)、致命错误英汉对照及处理方法:A-B致命错误Bad call of in-line function (内部函数非法调用)分析与处理:在使用一个宏定义的内部函数时,没能正确调用。一个内部函数以两个下划线(__)开始和结束。Irreducable expression tree (不可约表达式树..
阅读全文
posted @
2012-06-29 13:30
carekee
阅读(577)
推荐(0) 编辑
一个C语言小程序,有10几个命令和MSDOS一样哦:)
摘要:/*调用函数中的scanf前没有提示,其实在主函数中输入时,空格后还可以输入被调用函数中的参数*//*这样就避免了很多输出的麻烦,而且看着也比较的舒服:-)例如新建立一个文件,就可以直接输入mf a.txt(注意,中间有空格)就可以建立一个文本文件了*/#include<stdio.h>#include<dir.h>#include<string.h>#include<conio.h>#include<errno.h>#include<dos.h>#include<io.h>#include<proces
阅读全文
posted @
2012-06-29 13:29
carekee
阅读(604)
推荐(1) 编辑