tool.c
#include <stdlib.h>
#include "tool.h"
void safeFree(void** pp) {
if (pp != NULL & *pp != NULL) {
free(*pp);
*pp = NULL;
}
}
tool.h
#ifndef tool_h
#define tool_h
void safeFree(void** pp);
#define safeFree(p) safeFree((void**)&(p))
#endif /* tool_h */
我想在tool.h
中导入main.c
后使用宏,但程序无法编译。有什么办法可以用同名来定义宏和函数吗?
答案 0 :(得分:2)
有什么方法可以定义具有相同名称的宏和函数吗?
不在同一个编译单元中。
此外,这不是一个好习惯。 不要这样做 。如果宏将成为您使用该功能的主要方法,请将该功能定义为其他功能。 E.g。
void safeFreeImpl(void** pp);
#define safeFree(p) safeFreeImpl((void**)&(p))
相应地更改tool.c
。