2011-07-28 3 views
1

ここでいくつかのアドバイスを求めています。アクセッサ関数はconst argを受け取りますが、Cで非定数ポインタを返します。

私は、このような何か別の構造体へのポインタを含む構造を有している:

int item_get_type(const struct item * i); 
struct user * item_get_owner(const struct item * i); 

私の質問は、第二についてです。このように、私もアクセサ関数を持っている

struct item 
{ 
    int type; 
    struct user *owner; 
}; 

をこれらの機能:これはconstの使用に関していかなる規則やベストプラクティスにも違反していますか?

ここでconstを使用するのは、アクセサー関数が渡された構造体を変更しないで、呼び出し元が返された構造体を変更できることを示すためです。議論の中でconstを削除する方が良いですか?

+0

以下の@Grahamの言葉通り、あなたがやっていることはまったく問題ありません。呼び出し元が返された構造体を変更できないようにする場合は、戻り値の型は 'const struct user *'でした。 –

答えて

6

これは絶対に丁寧であり、あなたが述べた意図を正しく示しています。

1

さらに、ユーザーが構造を変更することは容易であっても、コンパイラが関数内のコードを最適化するのに役立つので、constを使用することは良いです。コンパイラは、関数内の構造を変更する必要がないことを認識します。

関連する問題