请考虑以下代码

#define FIRSTNAME ""
#define SECONDNAME "JOHN"
# define PATHSAVE(a) func(strcat(strcpy(tmpFileName, appDir), a))
int main() {
  PATHSAVE(FIRSTNAME SECONDNAME);
}

通过分析,我发现值“John”被传递给函数PATHSAVE。
我不明白为什么在这个函数PATHSAVE中使用了两个参数(FIRSTNAME SECONDNAME)

最佳答案

PATHSAVE(FIRSTNAME SECONDNAME);

将展开到PATHSAVE(“JOHN”),因为预处理器将两个字符串连接在一起。
这将进一步扩展到
func(strcat(strcpy(tmpFileName, appDir), "JOHN"))

10-07 18:11