我想将函数A()
调用B()
作为内联宏,但我不想B()
让世界看到。我只想要A()
可见,如果用户B()
意外使用,我想要编译器错误。
我知道如何在没有内联的情况下做到这一点:
// a.h
void A(void);
// a.c
#include "b.h"
void A(void) { B(); }
如果我#include "a.h"
,那么我可以访问A()
但没有B()
。没关系; 这就是我想要的。
现在我想做同样的事情,但通过内联来减少一级调用复杂性B
,A
但我想隐藏B
.
// a.h
#include "b.h"
#define A() B()
#uninclude "b.h" <----This is bogus, but I want the equivalent.
// main.c
#include "a.h"
A(); <-- ok
B(); <-- undefined function
这是针对低级固件的,调用开销确实会产生影响,但我不想仅仅为了提高效率而放弃高级代码管理。在 C++ 中,这是微不足道的,但我正在寻找cpp
在纯 C 中执行此操作的技巧。
(在我的例子中,a
代表一个 HAL 并b
代表一个 BSP。HAL 是特定于处理器的,而 BSP 是特定于板(PCB)的)