`
yidongkaifa
  • 浏览: 4063721 次
文章分类
社区版块
存档分类
最新评论

C/C++编码技巧

 
阅读更多

声明:其中有些内容并不是本人原创,而是学习的别人的经验,或者是从书上看到的总结在此,既然拿出来共享,本人不再区分本人原创部分,而且有些技巧已经是众所周知,或者已经用了很长时间了,也弄不清出处了,这些对原创者一并给予感谢!

1. char str[20]
char* cp = &(str[2]);
这样比使用
char* cp = str+2;
要好,因为后编译器容易编译成加法指令,而上面这种方法编译器很容易优化,把str[2]解释为常量传给cp

2.短路径优先返回原则:如 if/else块包含return语句时,把包含return的块放在前面,去掉else, 如:

if(i>3){
// process block
}
else{
printf("parameter error!");
return -1;
}

改为

if( i<=3){
printf("parameter error!");
return -1;
}
// process block

这样可以减小{ }的嵌套深度,使代码更容易阅读。如果if和else块中都有程序块进行正常的处理,没有返回语句,要把较小的块放到前面,使代码没有头重脚轻的感觉。如果if/else语句中包含错误处理块,把错误处理块放到前面,以强调事务处理中的特殊情况,如果这样会使条件判断的复杂度提升,则可以不采用本规则。

3. 多行宏定义。使用do/while定义包含多行程序的宏如

#define increase_var(var) do{var +=1; var+=2; var+=3;}while(0)

4. 长表达式换行。当表达式太长或参数表太长需要换行时将运算符放到下行行首,而不是上一行尾。如

if( the_first_value
|| the_second_value
)
而不是
if(the_first_value ||
the_second_value)

function(argument_1
, argument_2
, argument_3
)
而不是
function(argument_1,
argument_2,
argument_3)

第一种格式中,如果想要注释掉条件表达式的一部分或者函数参数的某个参数时,只需要将某一行注释旧即可,非常方便。

5. 在==表达式中,将常量放到左端,例如:

int i=2;
if( 3 == i){ //......
}

这样就能够避免由于少输入一个等号“=”,造成程序错误,因为如果把 3==i 错写成 3=i 编译器会直接报错。

6.在不需要返回值的函数调用前加(void)以表示该函数不返回任何值,以提高可读性,如:

void myfunc(int arg)
{ // do something
}
void main(void)
{
...
(void)myfunc(20);
...
}

7.在帮助中使用argv[0]输出命令名称,不要使用硬编码。如:不要使用

printf("usage: commandName -u -v");

而要使用

printf("usage: %s -u -v", argv[0]);

这样即使用户将程序改名,或者以后改名,帮助仍然会输出正确的命令,而无而修改程序。

8.注释技巧。如:
//* block beginning
... block here
// block end */

这里的block是参加编译的代码,如果在调试的时候想把该块注释掉,只需要删除第一行前面的一个"/",因为上面的程序代码中编译器先解析第一行,发现有两个"/",则该行都被视为注释,不再解析后面的*,最后一行同理,所以首尾两行都被解析为行注释,而代码可以被编译。如果去掉最前面的一个"/",编译器解析时先解析到/* ,所以会认为是块注释,便等待一个 */ ,其中的部分都被视为注释,即直到最后一行的*/都被视为注释,所以程序块不会被编译。这在调试程序时比较有用,切换比较快。其实,现在SoureInsignt, Keil C51, Visual Studio, Borland C++等编译器都支持选择一块程序,使用菜单命令自动添加//,这个技巧好像不是太有用,但对于其它编辑器可能还是有用的。6

分享到:
评论

相关推荐

    天融信DLP部门 C/C++编码规范.docx

    本人所写的C/C++部门编码规范,排版清晰,语言简练,涵盖:命名规范、注释、bug规避等方面,拿来即用。

    C/C++安全编码

    对于初学者掌握C/C++编程语言有着重要的作用,掌握基本的编程技术,编程技巧,养成良好的编程习惯。

    C、C++和Java安全编码实践提示与技巧

    C、C++和Java安全编码实践提示与技巧

    ARM编程技巧(嵌入式开发)

    ARM编程技巧 1. C/C++和汇编混合模式编程 2. 使用ARM编译器编码 3. 局部和全局数据讨论

    C++ Templates 中文版

    本书首先讲述了语言细节,然后对编码技巧进行了广泛的讨论,最后还对模板的高级应用进行了阐述、分析。贯串全书的示例阐明了抽象概念并演示了最优实践方法。 读者将学习到: ·正确的模板行为; ·如何避开与模板...

    Visual C++音频/视频处理技术及工程实践 (分卷1)

    主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发视频、MMX/SSE进行多媒体汇编编程、DM642 DSP进行音视频算法优化和主流视频算法MPEG-4/H.264的编码原理及工程实践。本书系统地...

    2024蓝桥杯cc 大学b组指导.doc

    3. **刷题训练**:通过在线OJ(Online Judge)平台如LeetCode、Codeforces、洛谷等进行大量的编程练习,提高解题能力和编码技巧。 4. **分析历年真题**:研究历年蓝桥杯的真题,了解题目类型和难度分布,对经常出现...

    ARM 编程技巧 嵌入式初学者可以看看

    ARM编程中用到的技巧适合嵌入式初学者 主要内容包括:ARM 编译器优化、C/C++和汇编混合模式编程、使用ARM编译器编码、局部和全局数据讨论

    Visual C++音频/视频处理技术及工程实践(分卷2)

    主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发视频、MMX/SSE进行多媒体汇编编程、DM642 DSP进行音视频算法优化和主流视频算法MPEG-4/H.264的编码原理及工程实践。本书系统地...

    C++编程惯用法.高级程序员常用方法和技巧

    始终着眼于C++语言的编程实践,提供了大量实践示例和解决方案,包括如何更好地实现重用、如何有效地测试和调试等C++专业人员常用的一些技术与方法,还提供了一些鲜为人知的、能大大简化工作的C十十语言特性;...

    C++实现判断一个字符串是否为UTF8或GBK格式的方法

    主要介绍了C++实现判断一个字符串是否为UTF8或GBK格式的方法,涉及C++针对字符编码的遍历、判断、编码转换等相关操作技巧,需要的朋友可以参考下

    Visual C++音频视频处理技术及工程实践(分卷7)

    主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发视频、MMX/SSE进行多媒体汇编编程、DM642 DSP进行音视频算法优化和主流视频算法MPEG-4/H.264的编码原理及工程实践。本书系统地...

    c语言c++项目源代码_C语言10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等.rar

    冒泡排序和快速排序则是经典的排序算法,通过实际编码实现,可以更加直观地感受它们的效率差异和应用场景。 除此之外,项目还包含了链表、栈、队列等其他常见数据结构的实现,以及基于这些数据结构的实际应用案例。...

    高质量C++C 编程指南,高质量程序设计指南C++,C语言,C#

    学习C语言,除了要学习语法,还要学习内存、字符编码、调试技巧以及编程思维,这些知识点本教程都做了详细讲解。

    McGraw C++程序调试实用手册

    书中深入地分析了开发不包含逻辑和语法错误的代码技巧以及调试程序的基本原理,介绍了开发和调试命令行代码的过程和方法,说明了关于定位、分析及修复编程错误的方法,介绍了开发 Visual C++程序时所遇到的特殊...

    Visual C++音频视频处理技术及工程实践(分卷0)

    主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发视频、MMX/SSE进行多媒体汇编编程、DM642 DSP进行音视频算法优化和主流视频算法MPEG-4/H.264的编码原理及工程实践。本书系统地...

    Visual C++音频视频处理技术及工程实践地址

    主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发视频、MMX/SSE进行多媒体汇编编程、DM642 DSP进行音视频算法优化和主流视频算法MPEG-4/H.264的编码原理及工程实践。本书系统地...

    Visual C++音频视频处理技术及工程实践(含源码2/2)

    主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发视频、MMX/SSE进行多媒体汇编编程、DM642 DSP进行音视频算法优化和主流视频算法MPEG-4/H.264的编码原理及工程实践。本书系统地...

    c语言编写单片机技巧

    答:对于复杂而开发时间紧的项目时,可以采用C语言,但前提是要求对该MCU系统的C语言和C编译器非常熟悉,特别要注意该C编译系统所能支持的数据类型和算法。虽然C语言是最普遍的一种高级语言,但不同的MCU厂家其...

    Visual C++ 音频/视频 处理技术及工程实践(分卷3)

    主要内容包括软件Visual C++2005的开发技术、DirectSound开发音频、DirectShow/VFW开发视频、MMX/SSE进行多媒体汇编编程、DM642 DSP进行音视频算法优化和主流视频算法MPEG-4/H.264的编码原理及工程实践。本书系统地...

Global site tag (gtag.js) - Google Analytics