c - 是否有任何默认或推荐的宏样式?

标签 c coding-style macros

我发现了几个不同风格的宏。
对于这样的头文件:

#define __HEADER_H__
#define _HEADER_H_
#define _header_h

简单的宏:

#define SOMEMACRO something
#define somemacro something
#define SOME_MACRO something

带参数的宏:

#define func_macro() something() // arguments not used?
#define FUNC_MACRO something()
#define func_macro something()

所以我的问题是:它们中的一些样式是好是坏?宏名称是否有“默认”样式?

最佳答案

使用所有大写字母绝对是常量的方法。但是,我建议永远不要使用函数宏。我建议编写内联函数。在某些情况下使用的函数宏会导致逻辑错误。例如:

#define FUNC(x) x + x

int main() {
    int a = 1;
    b = FUNC(a++);
}

结果是未定义的,很可能不是预期的结果。

关于c - 是否有任何默认或推荐的宏样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11639230/

相关文章:

c - 如何计算 .c 文件中的 ifs?

android - 更改 Android 中的微调按钮样式

C++ 命名空间 - "using"或明确说明?

c - 我们如何将包含预定义宏的字符串存储到 C 中的变量中?

macros - 为什么 clojure 向反引号内的名称添加 namespace 限定符?

c - 为什么我的字符串数组变空了 - C

c - 标准 C mktime 线程在 Linux 上安全吗?

挂钟的计算

wpf - 如何在 WPF 中制作 Windows 资源管理器文件预览屏幕?

Rust 对长 Trait 约束链使用宏