関数A()
呼び出しをインライン マクロとして使用したいのですが、外部から見えるようにしB()
たくありません。B()
ユーザーが誤っA()
て使用した場合は、コンパイラエラーが必要です。B()
インライン化せずにそれを行う方法を知っています:
// a.h
void A(void);
// a.c
#include "b.h"
void A(void) { B(); }
I#include "a.h"
の場合、 にアクセスできますが、 にはアクセスできA()
ませんB()
。それはいいです; それが私が欲しいものです。
今、私は同じことをしたいのですが、インライン化することで呼び出しの複雑さを 1 レベル減らしますが、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
これは、呼び出しのオーバーヘッドが違いを生む低レベルのファームウェア用ですが、効率のために高レベルのコード管理を放棄したくありません。cpp
C++ ではこれは些細なことですが、純粋な C でそれを行うためのハックを探しています。
(私の場合、a
は HAL をb
表し、BSP を表します。HAL はプロセッサ固有ですが、BSP はボード (PCB) 固有です)