zoukankan      html  css  js  c++  java
  • 《改善C++程序的150个建议》

    1、不要让main函数返回void,并且建议显式的调用 return 0;

    2、区分0的4种面孔:整型0、空指针NULL、字符串结束标志 '\0'、逻辑false。

    前两者都占32位,推荐在置空指针或比较指针时,使用NULL,如 int* i = NULL; if (i == NULL);  第三种是一个字符,占8字节。如 "Hello" 只有5个字符,却要分配6字符空间;第四种占用一个字节

    3、不要忘记对局部指针变量的初始化,可以设置为NULL,否则会报警告;但对于全局指针变量来说,编译器会自己完成对它的初始化,不会报警告。

    4、逗号表达式的值为最右边表达式的值,如 while(i++,j--)

    5、拒绝晦涩难懂的函数指针。一般函数指针用于运行时函数回调,使用 typedef 简化。

    6、防止包含重复的头文件,一个是使用 #ifndef 方式,一个是使用 #pragme once ,前者受C/C++标准支持,但每次编译时都需要打开头文件才能判定是否有重复定义,因此编译大型项目时较长,另外如果取名有重复,也会有问题。后者不受C/C++标准支持,仅受编译器支持,不过编译速度提升。(该书说GCC已经取消了对其的支持,难道是最新版的?有空试一下)。如果使用前者,可以采用GOOGLE建议的, _<PROJECT_PATH>_<FILE>_H_

    7、优化结构体中的元素布局。 如 struct A{ int a; char b; short c;};      struct B{ char b; int a; short c;};   则 sizeof(A) == 8   sizeof(B) == 12

    可以使用  #pragma pack(n) 来设置结构体的对齐方式,默认为8,可以设为1,则上面结构体的长度为7。

    字节对齐的三个原则:

    一、结构体首字址能够被最宽基本类型成员的大小所整除。(没明白)

    二、每个成员相对结构体首地址的偏移量都为自身大小的整数倍。

    三、结构体总大小为结构体最宽基本类型成员大小的整数倍。

    编程应用中,如果空间紧张,需要考虑节约空间,则将结构体中的变量按类型大小从小到大依次声明。

  • 相关阅读:
    第三方登录的原理
    浅谈算法的时间复杂度和空间复杂度
    python3的全局变量和局部变量
    python3的嵌套函数
    HTTP协议学习-03
    HTTP协议学习-02
    HTTP协议学习-01
    织梦模板修改方法大全
    java常用用代码
    java学用代码
  • 原文地址:https://www.cnblogs.com/tianyajuanke/p/2966762.html
Copyright © 2011-2022 走看看