問題タブ [inline-functions]
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.
c - -finline-limit GCC コンパイラ オプションの正確な動作
GCC のコンパイラ オプションを使用しています。コードをコンパイルしてプロファイリングし、CPU サイクルの削減を確認しています。Nを増やすと、理想的には、より大きな関数がインライン化されるため、サイクル数が減少するはずです。しかし、CPU サイクルが増加しています。なぜこうなった?-finline-limit=N
ios - Objective C で NS_INLINE 関数を使用する場合
多くの人NS_INLINE
がコードで関数を使用することがあることに気付きました。私は、彼らがいつそれを使うべきか、そしてなぜそれを使うのかを知りたがっています。
INLINE
関数は関数よりも命令が少ないと読みましたobjective-C
。Cについてあまり知らないので、この分野で少し迷っています。
私が見たいくつかの例は次のとおりです。
特定の場所で使用したい。例えば。assets
ギャラリーをすべて取得して、と があるかどうかを確認する必要がlocation
ありdate
ます。checkLocation
それらの機能を機能checkDate
として実行したいと思いinline
ます。
一部のユーザーは 5000 枚の写真を持っていますが、iPhone 4s では時間が 5 分まで増加します。これは多すぎます。コードをリファクタリングしたいのですが、inline
関数が悪い方法ではない場合があることを読みました。
c - 関数を非静的として宣言し、静的インラインとして実装する
関数のさまざまな実装を書きたいと思いますinline
。したがって、関数を次のように宣言します。
そしてまた持っています:
DO_INLINE
コンパイル時に指定します。
MSVC ではこれに問題はありませんが、GCC (4.1.1) は、静的関数を非静的として宣言した後で静的関数を宣言していると文句を言います。static
修飾子を削除すると#include "MyHeader.h"
、複数のコンパイル単位から、複数の定義について不平を言うでしょう。(あたかもinline
関数が であるかのようにextern
。) コンパイラがこれに問題を抱えている理由がよくわかりません。
これはかなり明白で明確であるべきだと思います:
宣言が である必要はありませんstatic
。
そうは言っても、私が回避しようと非常に懸命に努力している私の問題に対する解決策があります。
編集: これは、より現実的な使用例です: http://codepad.org/OkC0Su3v
c - 2 つの c ファイル間のグローバルインライン関数
この質問に続いて、私は以前に尋ねました。inline
グローバル スコープで関数を定義する方法を知りたいです。
test.h で関数を宣言 し、main.cで定義して、test.c から呼び出したい。inline
main.c と test.c の両方#include "test.h"
(コード サンプルについては、上のリンクをクリックしてください)。
これは基本的に、ユーザーが有効/無効にできるある種のコールバック関数です。また、関数が定義されているファイルは 1 つだけです。
inline
コンパイラへの単なる提案であり、最新の CPU では大きな違いはありませんが、これは 8 ビット マイクロコントローラ用であり、実際に必要になります。
編集:
このインライン関数を呼び出す関数が test.c にあります。呼び出しを main.c で定義された関数の本体に置き換えたいだけです。それが理にかなっていることを願っています。