易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 : c++

嵌入式C/C++开发中的代码优化

事情应该被做得尽可能的简单,但不是任意地简单化。
――爱因斯坦
虽然做好的程序能按项目需求正确运行到最后一步,但在嵌入式系统开发中并不总是能成功的。由于低成本的需要硬件设计者几乎不可能设计出足够的内存和处理器性能来使得程序能被运行。当然,在软件开发过程中使得程序能够正确运行是更重要的。为了这点,通常有一个或更多的开发平台,这些平台拥有更多的内存和更快的处理器速度,能够使得软件正确运行,并且在项目开发最后阶段能够优化代码。总之,项目开发的最后目标是使得开发出的程序能够在配置低的设备上运行。
1 提高代码的运行效率
所有的C或C++编译器在一定程度上能够优化代码,然而,大部份的优化是基于运行速度和代码长度的折衷,你的程序无法做到既速度快又代码长度小。实际上,在某一方面改进了,但又在其它方面会有负面影响,这取决于程序员决定什么改进是最重要的。设置一些优化方面的信息,编译器在优化阶段当碰到运行速度和代码长度要折衷时能能够做出适当选择。
既然不能让编译器在两方面同时达到优化效果,我建议首先要减小代码量。对于实时或频繁执行的代码块运行速度通常是重要的,并且有许多方法通过动手可以提高运行效率。然而,代码 ......

嵌入式C/C++开发中的代码优化

事情应该被做得尽可能的简单,但不是任意地简单化。
――爱因斯坦
虽然做好的程序能按项目需求正确运行到最后一步,但在嵌入式系统开发中并不总是能成功的。由于低成本的需要硬件设计者几乎不可能设计出足够的内存和处理器性能来使得程序能被运行。当然,在软件开发过程中使得程序能够正确运行是更重要的。为了这点,通常有一个或更多的开发平台,这些平台拥有更多的内存和更快的处理器速度,能够使得软件正确运行,并且在项目开发最后阶段能够优化代码。总之,项目开发的最后目标是使得开发出的程序能够在配置低的设备上运行。
1 提高代码的运行效率
所有的C或C++编译器在一定程度上能够优化代码,然而,大部份的优化是基于运行速度和代码长度的折衷,你的程序无法做到既速度快又代码长度小。实际上,在某一方面改进了,但又在其它方面会有负面影响,这取决于程序员决定什么改进是最重要的。设置一些优化方面的信息,编译器在优化阶段当碰到运行速度和代码长度要折衷时能能够做出适当选择。
既然不能让编译器在两方面同时达到优化效果,我建议首先要减小代码量。对于实时或频繁执行的代码块运行速度通常是重要的,并且有许多方法通过动手可以提高运行效率。然而,代码 ......

【C\C++语言入门篇】 深入指针

再上一篇,我们介绍了基本调试。之前也说了,之所以把调试放在前面讲是因为后面的文章基本都会用到调试。观察我们的程序到底发生了什么。让我们能够直接明了的看清楚问题的本质。本篇将深入一点介绍指针这个让无数初学者畏惧的东西。希望大家再看完本篇之后能对指针有新的认识,之后不再惧怕它。觉得它就那么回事。那下面我们就努力攻克这个令我们“惧怕”的东西。
我们可能进入大学读计算机相关专业,基本第一门编程语言就是C语言。可能老师们也喜欢跟学生总结整本书难点在什么地方。那么指针必然是老师提到的难点之一。我个人觉得这样的总结还不如不总结,原因很简单,因为这样会给学生心理负担,学到指针的时候那根弦都崩的很紧。从骨子里就认定了它有难度,初学者脆弱的心灵因此而感到惧怕。换个角度,为什么我们不能觉得指针也就那么回事?没有什么特别的嘛,哪里难了嘛!这样不是既有信心又有兴趣去搞定它?说了这么多,只想强调一点,什么东西都报怀疑态度未必是件坏事。指针不是老师说的那么恐怖。好了,下面我们就系统的从几个角度去理解指针。
概念上理解 所谓指针,没学过编程语言的可能会觉得是指南针或者鼠标的指针。呵呵,这种说法虽然差之千里,但 ......

【C\C++语言入门篇】 深入指针

再上一篇,我们介绍了基本调试。之前也说了,之所以把调试放在前面讲是因为后面的文章基本都会用到调试。观察我们的程序到底发生了什么。让我们能够直接明了的看清楚问题的本质。本篇将深入一点介绍指针这个让无数初学者畏惧的东西。希望大家再看完本篇之后能对指针有新的认识,之后不再惧怕它。觉得它就那么回事。那下面我们就努力攻克这个令我们“惧怕”的东西。
我们可能进入大学读计算机相关专业,基本第一门编程语言就是C语言。可能老师们也喜欢跟学生总结整本书难点在什么地方。那么指针必然是老师提到的难点之一。我个人觉得这样的总结还不如不总结,原因很简单,因为这样会给学生心理负担,学到指针的时候那根弦都崩的很紧。从骨子里就认定了它有难度,初学者脆弱的心灵因此而感到惧怕。换个角度,为什么我们不能觉得指针也就那么回事?没有什么特别的嘛,哪里难了嘛!这样不是既有信心又有兴趣去搞定它?说了这么多,只想强调一点,什么东西都报怀疑态度未必是件坏事。指针不是老师说的那么恐怖。好了,下面我们就系统的从几个角度去理解指针。
概念上理解 所谓指针,没学过编程语言的可能会觉得是指南针或者鼠标的指针。呵呵,这种说法虽然差之千里,但 ......

转贴 C/C++程序员常见面试题深入剖析

1.引言   本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见-。
 许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程
度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿到10分中的2分。读者可从本文看到strcpy
函数从2分到10分解答的例子,看看自己属于什么样的层次。此外,还有一些面试题考查面试者敏捷的思维能力。
  分析这些面试题,本身包含很强的趣味性;而作为一名研发人员,通过对这些面试题的深入剖析则可进一步增强自身的内功。
2.找错题
  试题1:
void test1()
{
 char string[10];
 char* str1 = "0123456789";
 strcpy( string, str1 );   }
  试题2:
void test2()
{
 char string[10], str1[10];
 int i;
 for(i=0; i<10; i++)
 {   str1 = 'a';
 }
 strcpy( string, str1 ......

转贴 C/C++程序员常见面试题深入剖析

1.引言   本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见-。
 许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程
度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿到10分中的2分。读者可从本文看到strcpy
函数从2分到10分解答的例子,看看自己属于什么样的层次。此外,还有一些面试题考查面试者敏捷的思维能力。
  分析这些面试题,本身包含很强的趣味性;而作为一名研发人员,通过对这些面试题的深入剖析则可进一步增强自身的内功。
2.找错题
  试题1:
void test1()
{
 char string[10];
 char* str1 = "0123456789";
 strcpy( string, str1 );   }
  试题2:
void test2()
{
 char string[10], str1[10];
 int i;
 for(i=0; i<10; i++)
 {   str1 = 'a';
 }
 strcpy( string, str1 ......

VC++用OO4O连接Oracle数据库

在打包oralce客户端后,经常会遇到这个问题“specified   class   not   registered   in   registry”
解决办法:
       这是因为有几个链接库dll或ocx没注册的原因,经本人测试为以下5个文件:
     
        Oo4oaddin.dll
        Oo4ocodewiz.dll
        oip10.dll
        oradc.ocx
        Odbtreeview.ocx
        依次注册这5个文件后,不会再提示“specified   class   not   registered   in   registry”
        具体文件看Oracle数据库的版本,本测试用的版本是Oracle 10g ......

VC++用OO4O连接Oracle数据库

在打包oralce客户端后,经常会遇到这个问题“specified   class   not   registered   in   registry”
解决办法:
       这是因为有几个链接库dll或ocx没注册的原因,经本人测试为以下5个文件:
     
        Oo4oaddin.dll
        Oo4ocodewiz.dll
        oip10.dll
        oradc.ocx
        Odbtreeview.ocx
        依次注册这5个文件后,不会再提示“specified   class   not   registered   in   registry”
        具体文件看Oracle数据库的版本,本测试用的版本是Oracle 10g ......

C/C++语言struct深层探索

1. struct的巨大作用
  面对一个人的大型C/C++程序时,只看其对struct的使用情况我们就可以对其编写者的
编程经验进行评估。因为一个大型的C/C++程序,势必要涉及一些(甚至大量)进行数据组合
的结构体,这些结构体可以将原本意义属于一个整体的数据组合在一起。从某种程度上来
说,会不会用struct,怎样用struct是区别一个开发人员是否具备丰富开发经历的标志。
  在网络协议、通信控制、嵌入式系统的C/C++编程中,我们经常要传送的不是简单的字
节流(char型数组),而是多种数据组合起来的一个整体,其表现形式是一个结构体。
  经验不足的开发人员往往将所有需要传送的内容依顺序保存在char型数组中,通过指
针偏移的方法传送网络报文等信息。这样做编程复杂,易出错,而且一旦控制方式及通信
协议有所变化,程序就要进行非常细致的修改。
  一个有经验的开发者则灵活运用结构体,举一个例子,假设网络或控制协议中需要传
送三种报文,其格式分别为packetA、packetB、packetC:
struct structA
{
int a;
char b;
};
struct structB
{
char a;
short b;
};
struct structC
{
int a;
char b;
float c;
}
  优秀的程序设计者这样设计 ......

C/C++语言struct深层探索

1. struct的巨大作用
  面对一个人的大型C/C++程序时,只看其对struct的使用情况我们就可以对其编写者的
编程经验进行评估。因为一个大型的C/C++程序,势必要涉及一些(甚至大量)进行数据组合
的结构体,这些结构体可以将原本意义属于一个整体的数据组合在一起。从某种程度上来
说,会不会用struct,怎样用struct是区别一个开发人员是否具备丰富开发经历的标志。
  在网络协议、通信控制、嵌入式系统的C/C++编程中,我们经常要传送的不是简单的字
节流(char型数组),而是多种数据组合起来的一个整体,其表现形式是一个结构体。
  经验不足的开发人员往往将所有需要传送的内容依顺序保存在char型数组中,通过指
针偏移的方法传送网络报文等信息。这样做编程复杂,易出错,而且一旦控制方式及通信
协议有所变化,程序就要进行非常细致的修改。
  一个有经验的开发者则灵活运用结构体,举一个例子,假设网络或控制协议中需要传
送三种报文,其格式分别为packetA、packetB、packetC:
struct structA
{
int a;
char b;
};
struct structB
{
char a;
short b;
};
struct structC
{
int a;
char b;
float c;
}
  优秀的程序设计者这样设计 ......

C/C++语言void及void指针深层探索

  1.概述
  许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。
  2.void的含义
  void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。
  void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义:
void a;
  这行语句编译时会出错,提示“illegal use of type 'void'”。不过,即使void a的编译不会出错,它也没有任何实际意义。
  void真正发挥的作用在于:
  (1) 对函数返回的限定;
  (2) 对函数参数的限定。
  我们将在第三节对以上二点进行具体说明。
  众所周知,如果指针p1和p2的类型相同,那么我们可以直接在p1和p2间互相赋值;如果p1和p2指向不同的数据类型,则必须使用强制类型转换运算符把赋值运算符右边的指针类型转换为左边指针的类型。
  例如:
float *p1;
int *p2;
p1 = p2;
  其中p1 = p2语句会编译出错,提示“'=' : cannot convert from 'int *' to 'float * ......

C/C++语言void及void指针深层探索

  1.概述
  许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。
  2.void的含义
  void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。
  void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义:
void a;
  这行语句编译时会出错,提示“illegal use of type 'void'”。不过,即使void a的编译不会出错,它也没有任何实际意义。
  void真正发挥的作用在于:
  (1) 对函数返回的限定;
  (2) 对函数参数的限定。
  我们将在第三节对以上二点进行具体说明。
  众所周知,如果指针p1和p2的类型相同,那么我们可以直接在p1和p2间互相赋值;如果p1和p2指向不同的数据类型,则必须使用强制类型转换运算符把赋值运算符右边的指针类型转换为左边指针的类型。
  例如:
float *p1;
int *p2;
p1 = p2;
  其中p1 = p2语句会编译出错,提示“'=' : cannot convert from 'int *' to 'float * ......
总记录数:969; 总页数:162; 每页6 条; 首页 上一页 [88] [89] [90] [91] 92 [93] [94] [95] [96] [97]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号