zoukankan      html  css  js  c++  java
  • kernel编程规范

    1. 制表符8个空格
    2. 每行最长80字符
    3. 代码块的{放在首行,但是函数的{放在次行
    4. 只有一行的if块,不加{}
    5. 不在()前后加空格
    6. 正常关键字后加一个空格,if, switch, case, for, do, while
    7. 但是不要在sizeof、typeof、alignof或者__attribute__这些关键字之后放空格
    8. 指针*号,靠近变量名,而不是靠近类型名
    9. 操作符前后使用一个空格
    10. 除非是可能32位,可能64位的情况类似场景下,使用typedef
    11. 使用goto做函数集中式的退出
    12. 宏请大写,但是形如函数名的宏小写
    13. 相关常量请用枚举

    14. 含有多个语句的宏应该被包含在一个do-while代码块里:
    #define macrofun(a, b, c)
    do {
    if (a == 5)
    do_this(b, c);
    } while (0)

    15. 1) 影响控制流程的宏:

    #define FOO(x)
    do {
    if (blah(x) < 0)
    return -EBUGGERED;
    } while(0)

    非常不好。它看起来像一个函数,不过却能导致“调用”它的函数退出;不要打乱读者大脑里
    的语法分析器。

    16. 2) 依赖于一个固定名字的本地变量的宏:

    #define FOO(val) bar(index, val)

    可能看起来像是个不错的东西,不过它非常容易把读代码的人搞糊涂,而且容易导致看起来
    不相关的改动带来错误。

    17. 不要重复发明内核宏
    数组大小
    #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
    类似的,如果你要计算某结构体成员的大小,使用
    #define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f))

  • 相关阅读:
    pip:No module named setuptools_rust
    pip:ffi.h: No such file or directory"
    docker一键搭建postgresql脚本(全网精华版原创)
    前端父子页面传递消息
    ubuntu内核系统安装node和npm打包前端代码
    强制刷新dom问题
    关于html中属性设置在代码中取消问题
    mybatis-mapper.xml中调用方法
    mysql内置属性及方法
    swagger入门
  • 原文地址:https://www.cnblogs.com/unixshell/p/3793169.html
Copyright © 2011-2022 走看看