前提
機能の複雑化に伴い、ソースファイルを分けるのですが、
複数人数でリポジトリを使って開発を行っているため、
「特定のソースからしか呼ばせたくない関数」の記述にどのような方法があるか調べております。
該当のソースコード
FuncA0.c
1static int counter = 0; 2void countup( void ) 3{ 4 counter += 1; 5}
FuncA1.c
1extern void countup( void ); 2static void ExecFuncA1( void ) 3{ 4 countup(); 5}
FuncA.c を 「FuncA0.c」「FuncA1.c」に分けました。
(当該コードより簡略化して記載しております。)
元々 static void countup( void ) だったものから static を外しました。
複数人数で開発している環境では
他の方のソースファイルで、extarnすれば、countup関数の呼び出しが可能です。
これを何らかの方法で、「呼び出せない」または「ビルドが通らない」ようにする方法を検討しております。
アドバイスを頂きたいこと
今、私の頭に浮かんでいる対応方法としては、
案① FuncA0.c FuncA1.c はライブラリ化する。
案② static_assert を用いて ヘッダに公開する(抑止程度ですが…)
UnpublishedFunctions.h
1#ifndef UNPUBLISHED_FUNCTIONS_H 2#define UNPUBLISHED_FUNCTIONS_H 3void countup( void ); 4static_assert( FUNC_A1_ONLY == true, ”FuncA1 only!!“ ); 5#endif
FuncA1.c
1#define FUNC_A1_ONLY ( true ) 2#include "UnpublishedFunctions.h" 3void ExecFuncA1( void ) 4{ 5 countup(); 6}
案①は、目的はある程度達成できますが、ビルドを2種類用意する必要があること。
案②は、やろうと思えば、どのソースからも呼び出すことができること。(抑止力程度…)
と、
その他になにか方法がないか、アドバイスを頂ければと思います。
宜しくお願い致します。

回答3件
あなたの回答
tips
プレビュー