最近,我在看《C++编程思想》,里面提到了C++成功的七个原因。我将在这篇文章中进行简单的说明。
C++成功的原因是经济上的:转变到OOP(面向对象编程)需要代价,而转变到C++所花的代价较小。
C++的目的是提高效率。C++成功是因为它立足于实际:尽可能地为程序员提供最大便利。
1. 较好的C
C++堵塞了C语言中的一些漏洞,并提供更好的类型检查和编译时的分析。
C++有一个性能,称为references(引用),它允许对函数参数和返回值的地址进行更方便的处理。函数重载改进了对名字的处理,使程序员能对不同的函数使用相同的名字。另外,名字空间也加强了名字的控制。
2. 采用渐进的学习方式
C++是对C的扩充,而不是新的文法和新的程序设计模型。程序员学习和理解这些性能,逐渐应用并继续创建有用的代码。这是C++成功的最重要的原因之一。
已有的C代码在C++中仍然是有用的。
3. 运行效率
C++不仅有与C相同的基本控制能力,面向对象的C++程序的速度与用C写的程序速度相差在±10%之内,而且常常更接近。
4. 系统更容易表达和理解
程序员所涉及的是较高层的概念,一行代码能做更多的事情。
易于表达所带来的另一个好处是易于维护。
5. “库”使你事半功倍
创建程序的最快方法是使用已经写好的代码:库。C++的主要目标是让程序员能更容易地使用库,这是通过将库转换为新数据类型(类)来完成的。引入一个库,就是向该语言增加一个新类型。
因为程序的各部分之间名字是隔离的,所以程序员想用多少库就用多少库。
模板的源代码重用:一些重要的类型要求修改源代码以便有效地重用;模板可以自动完成对代码的修改,因而是重用库代码特别有用的工具。
6. 错误处理
C++的异常处理保证能检查到错误并进行处理。
7. 大程序设计
设计C++的目的是为了辅助大程序设计,也就是说,去掉小程序和大程序之间复杂性的分界。
————————————————
版权声明:本文为CSDN博主「周兆熊」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/7576251
小弟最近在做用VC++编程控制agilent N9010A频谱仪。下面是程序。每次程序运行后都是返回“Could not open a session to GPIB device at address 18!”。分步调试时到viStatus =viOpen (defaultRM, "GPIB::18::INSTR", VI_NULL,VI_NULL,&viMXA);这一步时,viStatus的值就变成非0了。不知道原因是什么。还有分步调试时输出信息有一句 ““pinpu.exe”: 已加载“C:\Windows\System32\Visa32.dll”,未使用调试信息生成二进制文件。”不知道是不是这个原因。求各位大神指点!!
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include "visa.h"
#include "visatype.h"
#pragma comment(lib,"visa32.lib")
void main ()
{
/*program variables*/
ViSession defaultRM, viMXA;
ViStatus viStatus =0 ;
viStatus =viOpenDefaultRM (&defaultRM);
viStatus =viOpen (defaultRM, "GPIB::18::INSTR", VI_NULL,VI_NULL,&viMXA);
/*check opening session sucess*/
if(viStatus)
{
printf("Could not open a session to GPIB device at address 18!\n");
exit(0);
}
/*increase timeout to 60 sec*/
viSetAttribute(viMXA,VI_ATTR_TMO_VALUE,60000);
/*Clear the analyzer*/
viClear(viMXA);
/*Clear all event registers*/
viPrintf(viMXA, "*CLS\n");
/* Reset the MXA */
viPrintf(viMXA, "*RST\n");
viPrintf(viMXA, "FREQ:CENT 50MHz\n");
viPrintf(viMXA, "FREQ:SPAN 20MHz\n");
viPrintf(viMXA, "CALC:MARK1:MAX\n");
viPrintf(viMXA, "MMEM:STOR:RES:PTAB “myResults.csv”");
/* Close session */
viClose (viMXA);
viClose (defaultRM);
}
NI 的VISA和488.2 都有带例子的,可以安装的时候选择
你的消息管理器应该没有成功打开
谢谢各位,问题解决了。问题是visa32。dll文件的版本有问题。换了一个最新版的就可以了!
问题是这样的:
我现在用的是VISA COM,工具是VC6,目的是从Agilent测温机中读取温度数据。首先我用这样一组命令配置参数
"MEASUREMENT:SINGLE:STATE 0"
"CONFIGURE:MEASUREMENT:SETTING:PRESET"
"CONFIGURE:MEASUREMENT:SETUP:CHANNEL 1"
"CONFIGURE:MEASUREMENT:SETUP:MTIME 30"
":CONFigure:MEASurement:SETup:ITUTime 10"
"CONFIGURE:MEASUREMENT:SETUP:STARTDIST 0m"
"CONFIGURE:MEASUREMENT:SETUP:SPAN 139m"
":CONFigure:MEASurement:SETup:SINTerval 1"
":CONFigure:MEASurement:SETup:SRESolution 1"
":conf:meas:sens:sect1:arat 0.33"
":conf:meas:sens:sect1:tgc 1.0"
":conf:meas:sens:sect1:toc 0"
":conf:meas:sens:sect1:rind 1.46"
":conf:meas:sens:sect1:sfac 1"
配置后测温"MEASUREMENT:SINGLE:STATE 1",测温完成后发"READ:TRAC:DATA? 1"请求,问题就是我不知道该如何接收温度值。
如果我用IFormattedIO488Ptr::ReadString(),获取一组字符串,开头的一组字符是#3560...,表示这之后的560个字节是温度数据,我试图将此后字符串直接转换为float的温度值,但是我发现这个字符串长度只有549,就是说根本不完整,即不能用ReadString()函数读取数组数据
我看到ReadIEEEBlock和ReadList似乎是用来读数组数据的,但实在不知道如何用,文档中也没有实例,望指教
可以看出是VISA COM编程