我想将函数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)的)