如何在.c中实现宏但公开它以在.h文件中使用

Fab*_*cio 2 c

我不知道这是否可能,即使它是正确的,但我在.c文件中定义了一个宏,现在我想要公开该宏,所以我需要把它放在.h文件中.但我不想揭露它是如何实现的,只是要使用的签名.

//.c
#define sayhi() printf("hi");

//.h
sayhi()

//another.c
int main(...) {
    sayhi();
}
Run Code Online (Sandbox Code Playgroud)

sel*_*bie 7

不要把它变成一个宏.只需将其作为函数调用即可.

你的.h文件:

extern void DoSomething(int x, int y, int z);
Run Code Online (Sandbox Code Playgroud)

你的.c文件:

void DoSomething(int x, int y, int z)
{
    // your code goes here.
}
Run Code Online (Sandbox Code Playgroud)


kfs*_*one 5

宏不像函数那样具有签名,它们仅在预处理阶段持续存在.你要么必须使它成为一个函数,要么使实现成为一个函数.