头文件中具有相同名称的宏和函数

时间:2016-05-08 03:09:45

标签: c macros

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后使用宏,但程序无法编译。有什么办法可以用同名来定义宏和函数吗?

1 个答案:

答案 0 :(得分:2)

  

有什么方法可以定义具有相同名称的宏和函数吗?

不在同一个编译单元中。

此外,这不是一个好习惯。 不要这样做 。如果宏将成为您使用该功能的主要方法,请将该功能定义为其他功能。 E.g。

void safeFreeImpl(void** pp);
#define safeFree(p) safeFreeImpl((void**)&(p))

相应地更改tool.c