問題タブ [restrict-qualifier]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
3609 参照

c++ - 「restrict」が許可されていないというエラー メッセージが表示されるのはなぜですか?

私は CUDA カーネルを作成していて、__restrict__いくつかのパラメーターを使用したいと考えています。エラーメッセージが表示されます:

"restrict" is not allowed

一部の変数タイプでは許可されていませんか? パラメータのいくつかの組み合わせについては?いくつかのコンパイラフラグが原因ですか? 私がイタズラしたから?

簡略化されたカーネル署名:

0 投票する
3 に答える
937 参照

c - 「const restrict」ポインター引数をエイリアスすることは合法ですか?

dot_productとして宣言されている場合

でそれを呼び出すだろう

C99標準に従って、「未定義」になりますか?

編集

xsizeof(float) * x_lenもちろん、メモリのバイトを指すポインターx_lenですunsigned。この質問はエイリアシングに関するものです。

0 投票する
2 に答える
3526 参照

c++ - restrict キーワードが C++ の一部ではないのはなぜですか?

タイトルがすべてを物語っています。restrict キーワードが C++ の一部ではないのはなぜですか? 私は C++ についてあまり知りませんが、これをブロックする理由をオンラインで見つけることができません。C++ 標準がこのキーワードを C と同じように使用すると、どんな恐ろしいことが起こるか知っている人はいますか? まったく必要ないだけですか?

詳細説明: それを使用することではありません。おそらく、このキーワードから一生何の利益も得られないでしょう。この質問は単なる好奇心に関するものです。restrict は C99 以降、つまり 15 年で C の一部になっているためです。

これも読んでください: 私は技術的な理由に興味があります。

0 投票する
1 に答える
1566 参照

c++ - restrict キーワードを使用して、関数の「型修飾子」警告を取り除きます

次の形式の Blitz++ をコンパイルするときに表示される警告をクリーンアップしようとしています。

TinyVectorこのような(クラスの)メンバー関数から

私が知る限り、restrictキーワードが原因で警告が表示されます。注:restrict__restrict__(g++ が理解する) に置き換えるマクロがあります。

キーワードを削除することで、警告を取り除くことができます。ただし、これは高性能の数値ライブラリであると想定されているため、restrictキーワードが許可するコンパイラの最適化を失いたくありません。

restrictを完全に削除せずにこれらの警告を抑制するにはどうすればよい-Wallですか?

0 投票する
2 に答える
181 参照

c++ - 戻り値に適用された制限修飾子が効果を発揮するのはどのような場合ですか?

次のように宣言されたメンバー関数がある場合:

restrict キーワードで何かできますか?

どうやら、g++ (x86 アーキテクチャ) ではできませんが、このタイプの構築が理にかなっていて、最適化されたマシンコード生成を可能にする他のコンパイラ/アーキテクチャはありますか?

Blitz ライブラリ (Blitz++) にはこのように宣言された多数の関数があり、実際に何かを行わない限り、誰かが入って restrict キーワードを追加しても意味がないので、私が質問しています。したがって、restrict(コンパイラの警告を取り除くために) を削除する前に、コードをどのように悪用しているかを知りたいと思います。

0 投票する
0 に答える
193 参照

c++ - 配列構文を使用した g++ および MSVC の __restrict

私はrestrict、キーワード を使用して g++ および MSVC によって C++11 に実装されているように、使用するパフォーマンス クリティカルなライブラリを更新中です__restrict

次のような多くのルーチンと関数があります。

上記の例でfは、引数を制限する必要があるルーチンです。残念ながら、私が知る限り、その構文を維持しながらこれを行うことは不可能です。さて、明らかにこれはポインターを使用して次のように書き直すことができます。

ここで失われたのは、abが配列であるというセマンティックな事実です (私は、単一値ポインターにはポインター表記を使用し、配列ポインターには配列表記を使用することを好みます)。説明的な引数名 (上では省略) は役に立ちますが、それだけです。

配列構文を使用して制限された変数を宣言することは、現時点ではこれらのコンパイラでは不可能であることを確認したいと思います。