为什么C++会成功?

       最近,我在看《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编程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值