#define BINARY_TREE_PARENT_CORRECT(son, parent) ((son) ? (son->parent == parent) : 1)
事实证明,在son->parent
的parent
这意味着一个结构构件也将通过在parent
son, parent
取代。这是gcc预处理器的错误吗?
gcc版本是4.1.2
。
你认为这是一个错误或预期的行为?
#define BINARY_TREE_PARENT_CORRECT(son, parent) ((son) ? (son->parent == parent) : 1)
事实证明,在son->parent
的parent
这意味着一个结构构件也将通过在parent
son, parent
取代。这是gcc预处理器的错误吗?
gcc版本是4.1.2
。
你认为这是一个错误或预期的行为?
该行为是正确的。所有未引用的父母被替换。预处理器不会猜测你的意思。它只是取代你说的话。
这是预期的行为。预处理器不知道C的语法(除非在评估#if
中的控制表达式时) - 它只是替换了令牌。
简单修正:将参数名称更改为与元素名称不同。
#define BINARY_TREE_PARENT_CORRECT(son, par) ((son) ? (son->parent == par) : 1)
cpp与父母不匹配,所以你会得到你期望的行为。