`

改善c++程序建议——从c继承而来(一)

 
阅读更多
1、
不要让main函数返回void:
Void main()这样的代码在vc中是容许的但是,gcc就不行了!
要想保证程序具有良好的可移植性能,就要标明main函数返回int,而不是void。强烈建议使用以下形式:
Int main()
{
return 0;

}
2、
区分0的4中面孔:

FALSE\TRUE是int型,而false、true是bool类型;
3、避免那些运算符引发的混乱:

C++的运算符比较多,他们拥有不同的优先级和结合律,不过,我们可以用括号把意图表示的更清楚,所以不要吝惜使用括号,即使有时并不必要:
if( (a & b) == c)

4、
对表达式计算顺序不要想当然:
表达式计算顺序是一个很繁琐但是很有必要的的话题:
1) 针对操作符优先级,建议多写几个括号,打你的意图表达的更清晰;
2) 注意函数参数和操作数的评估求值顺序问题,小心陷阱,让你的表达式不要依赖设计顺序;
5、
小心宏#define使用中的陷阱:
1) 用宏定义表达式时,要使用完备的括号;
由于宏只是简单地字符替换,宏参数如果是复合结构,那么替换后要是不要括号保存个宏参数,就会出现优先级混乱问题。
2) 使用宏时,不允许参数发生变换:
3) 用大括号将宏所定义的多条表达式括起来:
如果没有大括号,宏定义中的多条表达式很有可能只用第一句被执行;
6、
不要忘记指针变量初始化:
7、
逗号分隔的表达式由于语言规则的不直观,容易产生理解上的误差,在使用逗号分隔表达式是,c++会确保每个表达时都被执行,而整个表达式的值,则是最右边表达式的结果;
8、
函数指针在运行时的动态调用中应用广泛。但是直接定义复杂的函数指针会由于有太多的括号,而是代码的可读性下降。使用typedef可以让函数指针更直观和以维护。
9、
防止重复包含头文件:
1)
为了避免重复包含头文件,建议在声明没个头文件时采用“头文件卫士”加以保护,如:
#ifndef  _PROJECT_PATH_FILE_H_
#define   _PROJECT_PATH_FILE_H_

...........
#endif

2)
为了避免宏名撞车,头文件基于所在项目源代码树的全路径而命名;
10、
优化结构体中元素的布局:
如下我们遵循结构体默认的字节对齐方式:结构体中的变量按照类型大小从小到大一次声明,尽量减少中间的填充字节;
#include <iostream>
using namespace std;

struct A
{
int a;
char b;
short c;
};

struct B
{
char b;
int a;
short c;
};
int main()
{

// sizeof(struct A);
// sizeof(struct B);
cout << " 结构体A" << sizeof(struct A) << endl;
cout << " 结构体B" << sizeof(struct B) << endl;
return 0;
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics