• 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))

  • 相关阅读:
    MacBook Pro修改hosts
    Python WebSocket
    TCP三次握手和四次挥手过程
    Tcp三次握手和四次挥手
    常见正则表达式
    Python正则表达式
    Python使用gevent实现协程
    Tcp客户端构建流程
    AC6102开发板USB3.0测试和使用说明
    AC6102 DDR2测试工程
  • 原文地址:https://www.cnblogs.com/unixshell/p/3793169.html
Copyright © 2020-2023  润新知