【问题标题】:Can someone explain me this syntax "#define HASH_IS_REAL(h_) ((h_) >= 2)"谁能解释一下这个语法“#define HASH_IS_REAL(h_) ((h_) >= 2)”
【发布时间】:2018-03-01 00:13:05
【问题描述】:

我尝试从这个http://tigcc.ticalc.org/doc/cpp.html 获得帮助。但是找不到这样的例子。此语法取自 Glib/ghash.c

#define HASH_IS_REAL(h_) ((h_) >= 2)

【问题讨论】:

  • 看起来很简单。如果其参数 >=2,则计算结果为 1。
  • 那只是测试h_是否大于等于2;我错过了什么吗?请发布其用法示例。为什么大于或等于 2 的值意味着“散列是真实的”是另一个问题,不过...
  • 我不得不理解这个文件github.com/GNOME/glib/blob/master/glib/ghash.c的函数g_hash_table_contains@

标签: c c-preprocessor


【解决方案1】:

这定义了一个接受参数的宏。编译 C 文件时,编译器会运行预处理器并将出现的 HASH_IS_REAL 替换为宏定义的规则。

如果你的代码有

int x = 18;
if(HASH_IS_REAL(x))
{
}

预处理器将其更改为

int x = 18;
if(((x) >= 2))
{
}

有关宏和 C 预处理器的更多信息,请参阅thisthis.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多