请考虑以下代码
#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"))