Welcome 微信登录

首页 / 软件开发 / C++

Intel C++ 9.0编译器优化效果测试

Intel C++ 9.0编译器优化效果测试

Intel C++ 9.0编译器优化效果测试2009-01-25 计算机与信息技术 田昊 阎慧 潘清摘 要 本文主要针对Intel C++ 9.0编译器在Visual C++ 6.0环境下对一些常用的功能性操作的优化作用进行了测试验证。主要从对采用编译器前后的程序运行时间进行比较来进行判断。测试范围主要集中于对线程的切换时间,转异常以及异常恢复时间,高优先级线程抢先时间以及信号量响应时间方面。此外,还对一些常用的数学函数的运行时间进行了测试比较。得出的测试...
C++扩展和嵌入Python

C++扩展和嵌入Python

C++扩展和嵌入Python2009-01-25 vckbase 胡金山Python简介Python是一种简单易学,功能强大的解释型编程语言,它有简洁明了的语法,高效率的高层数据结构,能够简单而有效地实现面向对象编程,特别适用于快速应用程序开发,也可以用来开发大规模的重要的商业应用。Python是一个理想的脚本语言。Python免费开源,可移植到多种操作系统,只要避免使用依赖于特定操作系统的特性,Python程序无需修改就可以在各种平台上面运行。Pytho...
C++的static关键字

C++的static关键字

C++的static关键字2009-01-25 vckbase 韩耀旭C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下://Example 1#include <iost...
用C++异常取代exit()函数

用C++异常取代exit()函数

用C++异常取代exit()函数2009-01-25 天极开发 谢启东从C语言开始接触C++的人,恐怕都知道exit()这个函数,似乎现在很多的程序员都有这样一种习惯,在程序一遇到错误、或任务刚完成时,把调用exit()函数当成是一种最好的结束程序的方法。在以前遗留的许多老式C/C++代码中,这种现象非常普遍,但当手头的软件项目逐步进展并越来越大时,就不得不面临合并以前分散的各个模块这项工作,此时,如果还有人记得起软件日志记录、错误宽容度、或至少适当的清理...
C++中使用BHO来屏蔽特定网站

C++中使用BHO来屏蔽特定网站

C++中使用BHO来屏蔽特定网站2009-01-25 天极开发 谢启东BHO(浏览器辅助对象)是一种简单的ATL COM对象,而Internet Explorer会在每次运行时都加载它;换句话来说,即每个Internet Explorer的实例都会加载它。BHO运行在Internet Explorer的地址空间内,能对可访问的对象(如窗口、模块等等)执行任何操作,且因为它依附于浏览器的主窗口,所以其生命期与浏览器实例的生命期一致。如果在系统中打开了活动桌面...
用C++控制DVD/CD驱动器的开关

用C++控制DVD/CD驱动器的开关

用C++控制DVD/CD驱动器的开关2009-01-25在Windows资源浏览器中,可在DVD/CD光驱图标上单击鼠标右键,选择"弹出"来打开光驱仓门,你可能也发现了,菜单中并没有"关闭"命令来关闭光驱。下面,就让我们用程序来控制打开、关闭光驱。程序的主要工作部分为CD_OpenClose(BOOL bOpen, TCHAR cDrive)函数://cDrive是光驱盘符,或者0x01为默认驱动器。//例如://C...
C++中对浮点数的格式化显示

C++中对浮点数的格式化显示

C++中对浮点数的格式化显示2009-01-25 天极开发 谢启东在许多应用程序领域中,都需要控制小数点后的小数位,但是浮点数对此不能提供直接的支持。怎样对程序中的浮点数据进行"整齐"地格式化呢?在此我们有一个迂回的方法,先把它们转换为字符串,格式化后以文本形式显示出来。在日常编程中--包括对话框、关系数据库、金融程序、SMS程序及一切处理数据文件的程序,需要控制小数点后的小数位的情况非常普遍,本文中将要讲解如何用简单的方法来控制小数位...
在C++程序中添加逻辑流程控制

在C++程序中添加逻辑流程控制

在C++程序中添加逻辑流程控制2009-01-25谢启东问题的引出在计算机程序中,除了常见的执行流程控制,还有逻辑流程控制;有时,执行流程即为逻辑流程,但在大多数情况下还是有所区别的,例如,假定有一个Web服务器使用同步套接字读取HTTP请求,那么会编写如下的代码:void read(HTTP_REQUEST& http_request){read(http_request.header);read(http_request.body, http_...
C/C++回调函数初探

C/C++回调函数初探

C/C++回调函数初探2009-01-25 天极 谢启东简介对于很多初学者来说,往往觉得回调函数很神秘,很想知道回调函数的工作原理。本文将要解释什么是回调函数、它们有什么好处、为什么要使用它们等等问题,在开始之前,假设你已经熟知了函数指针。什么是回调函数?简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。为什么要使用回调函数?因为可以把调用者与被...
C++/VC++编程疑难问题及解答(二)

C++/VC++编程疑难问题及解答(二)

C++/VC++编程疑难问题及解答(二)2009-01-27M. H. Li标准程序库问题,再谈list的迭代器是否可以随机移动?上篇文章中的"list的迭代器是否可以随机移动?"问题的回顾:由于list的内部实现是双向链表,链表就要求迭代器(指针)只能依次从前向后(或从后向前)移动,依次移动一个位置,因此list只定义了++和--操作符,而没有定义+、-、+=和-=等操作符。所以要想list的迭代器移动一段距离,就需要自己编程实现,用...
调用虚拟函数、持续化视图状态及POD类型概念

调用虚拟函数、持续化视图状态及POD类型概念

调用虚拟函数、持续化视图状态及POD类型概念2009-01-27Northtibet在 C++ 中,无法从某个类的构造函数中调用派生的虚拟函数,因为虚表还没有完全建立。但是在C#中好像就可以,是这样吗?为什么会有这种差别呢?确实如此,在这个方面 C# 与 C++ 是有差别的。在 C++ 中,如果你从构造函数或者析构函数中调用虚拟函数,编译器调用的虚拟函数是定义在这个正在被构造的类实例中的(例如,如果从 Base::Base 中调用 Base::SomeVi...
C++中重载+操作符的正确方法

C++中重载+操作符的正确方法

C++中重载+操作符的正确方法2009-01-27 vckbase Danny Kalev摘要:本文概要性地介绍如何选择正确的策略来为用户定义类型重载 + 操作符。用户定义的类型,如:字符串,日期,复数,联合体以及文件常常重载二元 + 操作符以实现对象的连接,附加或合并机制。但是要正确实现 + 操作符会给设计,实现和性能带来一定的挑战。本文将概要性地介绍如何选择正确的策略来为用户定义类型重载这个操作符。考虑如下的表达式:int x=4+2;内建的 + 操作...
在非MFC程序中引用CString

在非MFC程序中引用CString

在非MFC程序中引用CString2009-01-27 vckbase 阿半CString在当今软件设计界里还是小有名气的,说它是MFC中使用的最多的类一点也不过,然而在使用sdk编windows程序的时候,确不能利用CString类,只能用sdk的运行时库,比如strlen,strcpy,strstr等等,本文讨论的是在非mfc程序中使用CString类的方法,算是个引子,如果有更好的实现方法,欢迎大家讨论。为了使用CString类,首先源文件必须是以c...
引用的作用

引用的作用

引用的作用2009-01-27 vckbase panic众所周知,引用作为函数参数可以避免参数对象的额外拷贝,对于非内置类型,一般而言可以获得更高的效率,同时比指针更安全,语义也更清晰。但是除此之外引用有什么特别的作用呢?在同一个作用域的引用,就像这样:void f(){ int i = 0; int &ri = i; //这里。 //...} 事实上,在f的内部,需要操作i的地方,完全可以直接使用i,而不必要使用ri间接操作,使用i在语义上更...
文件重定义冲突的分析与解决

文件重定义冲突的分析与解决

文件重定义冲突的分析与解决2009-01-27 vckbase hrg21引言有时候看到论坛上有人问编译时重定义现象的问题。这个问题与头文件包含冲突有关,改一改相关头文件包含就会让问题消失。我在这里要以 <windows.h> <winsock.h> <winsock2.h>这3个头文件为例分析为什么会产生这种原因;然后给出一种不会产生冲突的做法;最后就此例的分析给出结论。本文对于已经知道冲突原因的读者是多余的,但对于一...
C++编译器如何实现异常处理

C++编译器如何实现异常处理

C++编译器如何实现异常处理2009-01-27 vckbase Vishal Kochhar译者注:本文在网上已经有几个译本,但都不完整,所以我决定自己把它翻译过来。虽然力求信、雅、达,但鉴于这是我的第一次翻译经历,不足之处敬请谅解并指出。与传统语言相比,C++的一项革命性创新就是它支持异常处理。传统的错误处理方式经常满足不了要求,而异常处理则是一个极好的替代解决方案。它将正常代码和错误处理代码清晰的划分开来,程序变得非常干净并且容易维护。本文讨论了编译...
volatile关键字的说明以及测试

volatile关键字的说明以及测试

volatile关键字的说明以及测试2009-01-27volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。使用该关键字的例子如下:int volatile nVint;当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处...
如何删除托管对象及包装一个库

如何删除托管对象及包装一个库

如何删除托管对象及包装一个库2009-01-27Northtibet在托管 C++ 中,请告诉我使用 delete 操作符销毁托管对象是否安全?是的,在托管 C++ 中,你可以删除( delete )托管对象,只要你理解删除只不过是调用对象的析构函数,但析构函数必须显示定义。调用 delete 不会释放对象的存储区。只有垃圾收集器才行。Figure 1 展示了一个简单的程序,该程序定义了一个带析构函数的托管类,当它运行的时候会显示一条信息。TESTDTOR...
程序风格的要素-C++风格指南

程序风格的要素-C++风格指南

程序风格的要素-C++风格指南2009-01-27 vckbase Neill Kipp译者序:这是一篇写于1996年1月23日的文章,到现在已经有9个年头了,很陈旧,有可能跟不上形势,但是有些东西仍然值得现在的开发者学习,我翻译这篇文字仅供读者参考。原文链接:http://www.gamedev.net/reference/articles/article708.asp文件头文件有".h"后缀。头文件包含类(class),结构(str...
<< 181 182 183 184 185 186 187 188 189 190 >>