私は、ヘッダーと.cファイルの関数プロトタイプ宣言の間に少しの違いがあるのだろうかと思っていました。いくつかのプロトタイプ関数を持つヘッダと、これらの関数を実際に実装した.cファイルがあります。私はヘッダーにいくつかの変更を加え、 "__restrict"修飾子(gccで認識されている)だけを追加しました。私の質問は、私は "__restrict"修飾子を.cファイルに入れなければならないのですか(現在のコードはコンパイルされているので、答えはノーだが、ある精度は高く評価されるだろう)。C:ヘッダのプロトタイプ宣言と実装のための関数宣言の違いは?
これはすべてのC修飾子で機能しますか? .cファイルで同じことをすることなく、ヘッダに "const"や "volatile"を追加することはできますか?ヘッダー内の現在
:
int myfunc_gettype (const mytype *__restrict, int *__restrict);
と実装ファイル内:
int myfunc_gettype(const mytype *attr, int *type)
実際にインクルードは、キーワードを制限することはC99であると__restrictはちょうど私が同じ結果を推測してgccのでキャッチです。 – claf
私は、制限の修飾子をヘッダに実装していないと、ポインタが "制限"されるかどうかわかりません。 – claf
あなたはUBを呼び出しています。実際には、ポインタを限定的に制限することがあります。標準のC++キーワードは 'restrict'ですが、なぜ__restrictを使用するのですか? – dirkgently