1

ヘッダーと .c ファイルでの関数プロトタイプの宣言の違いについて疑問に思っていました。いくつかのプロトタイプ関数を含むヘッダーと、これらの関数の実際の実装を含むいくつかの .c ファイルがあります。ヘッダーにいくつかの変更を加え、「__restrict」修飾子 (gcc によって認識される) のみを追加しました。私の質問は、「__restrict」修飾子を .c ファイルに配置する必要があるかどうかです (現在、コードはコンパイルされているため、答えはノーだと思いますが、ある程度の精度は高く評価されます)。

これはすべての C 修飾子で機能しますか? .c ファイルで同じことをしなくても、ヘッダーに「const」または「volatile」を追加できますか?

現在ヘッダーにある:

int myfunc_gettype (const mytype *__restrict, int *__restrict);

および実装ファイルで:

int myfunc_gettype(const mytype *attr, int *type)
4

3 に答える 3

4

する必要があります。不一致は、未定義の動作を引き起こします。ヘッダーと定義で別々の宣言をしたい理由はありますか?

キーワードはベンダー拡張機能とはrestrict対照的であることに注意してください(ヒント:キーワード名の前の 's を見てください)。移植性のために標準バージョンに固執する必要があります。__restrict_

于 2009-04-05T16:13:14.633 に答える