私は C で独自のアサート関数を開発しており、ヘッダー ファイルで次のように宣言されています。
void Certify_Continuity( const char* expression, const int line, const char* file );
次のように定義されたマクロを使用して呼び出す必要があります。
#if !defined ( ENABLE_DEBUG ) || defined ( __CALLE__ )
#define DEBUG_ASSERT( e ) (void)(e)
#else
#define DEBUG_ASSERT( e ) ( e ) ? (void)0 : Certify_Continuity( #e, __LINE__, __FILE__ )
#endif
ここでの問題は、プログラマーがCertify_Continuityを直接呼び出すことができることです。
ユーザーが関数を直接呼び出すことを禁止し、マクロを使用してのみ呼び出すことを許可する手法はありますか?