インターフェイス仕様「X」があるとしましょう。X は、との両方のタイプのメンバーの存在を保証XHeader.h
する struct を呼び出すように呼び出します。ただし、実装定義のメンバーは禁止されているわけではなく、実際にそうすることで効率が向上する場合は推奨されます。私が働いている会社のために X の実装を作成する必要があり、いくつかの状態を保存するために私の実装に固有のいくつかのメンバーを持つことが非常に便利であることに気付いたので、私は次のように書きました:X_Fiddle
foo
bar
int
typedef struct X_Fiddle {
int foo; /* Guaranteed by spec */
int bar; /* Guaranteed by spec */
size_t dinky_dingbat; /* IMPLEMENTATION-SPECIFIC, DO NOT USE */
unsigned char *dingbat_data; /* IMPLEMENTATION-SPECIFIC, DO NOT USE */
} X_Fiddle;
もちろん、これらは実装固有の詳細であり、将来のある時点で変更または消失する可能性があるため、使用すべきではない、dinky_dingbat
または使用すべきではないことをユーザーに伝えることは何もありません。dingbat_data
不透明なポインターのようなものを使用して実装を隠すことができない場合、そのような内部メンバーを目立たせるにはどうすればよいですか (またはそのようなものを隠すための他のトリック)? このような問題に対処するために一般的に使用される/標準的な方法はありますか? 私が考えることができる最善の方法は、先頭のアンダースコアのような命名規則を使用することですが、先頭のアンダースコアの規則がメンバー変数に適用されるかどうかはわかりません.C++固有の規則にも混乱していると感じています. また、それらに次のような名前を付けるかINTERNAL_dinky_dingbat
、内部に含まれる内部型用に別の構造体を持つことも考えましたX_Fiddle
、しかし、余分な入力を最小限に抑えたいので、やや嫌いです。または、実装固有の詳細がコメントとドキュメントに記載されている、上記のようなプレーンで通常の構造体を使用するだけで完全に受け入れられるのでしょうか。 ?
私がゼロから始めている、および/または私の会社/チームにこの特定のケースに関する慣習がないと仮定します。