アカウント名:
パスワード:
C言語では const は定数というよりも『値の変更不可』の印が付いただけの変数と考える方が自然だと思っています。グローバル変数として配列を用意したい場合に、要素数に const な変数を指定できないというような事情もあります。
なので、個人的には C言語で定数定義だけのために const を用いるのは必ずしも適切ではないと考えており、変数の実体を用意すべき/した方が良い場合は const にしますが、そうでなければ #define にしています。
ついでに、(1)のケースだと int set_xxxxx_size(int size);よりも int set_xxxxx_size(const int size);の方が幾分スマートですよ。
につきましては、その通りですね。後で修正しておこうと思います。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stay hungry, Stay foolish. -- Steven Paul Jobs
const使わないの? (スコア:0)
同感です (スコア:1, 興味深い)
ついでに、(1)のケースだと
int set_xxxxx_size(int size);よりも
int set_xxxxx_size(const int size);の方が幾分スマートですよ。
Re: (スコア:1)
C言語では const は定数というよりも『値の変更不可』の印が付いただけの変数と考える方が自然だと思っています。
グローバル変数として配列を用意したい場合に、要素数に const な変数を指定できないというような事情もあります。
なので、個人的には C言語で定数定義だけのために const を用いるのは必ずしも適切ではないと考えており、変数の実体を用意すべき/した方が良い場合は const にしますが、そうでなければ #define にしています。
につきましては、その通りですね。後で修正しておこうと思います。
Re:同感です (スコア:1)
引数がポインタ型の場合、 const な変数へのポインタを引数として渡されても Warning を出さないよう、 const int *p_size とすることで、関数内で *p_size の値を変更しないことを明示しますが、ポインタで無い場合は関数内でその引数の値を変更しようがしまいが、呼出元への影響はありませんから。
ポインタかどうかを意識するよりは常に const にする癖を付けておく方が間違いが無い、という程度の意味はありますが、その代わり関数の実装に制約が加わる (引数として用意した変数の値が関数内で自由に変更できない) ため、個人的にはあまり積極的にお勧めするものでもないかな、と思います。