問題タブ [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++ - gdb でインライン関数を呼び出したり、GCC を使用してそれらを発行したりできますか?
インライン関数はスタック トレースなどから除外される可能性があるため、デバッグが難しくなる可能性があることは誰もが知っています。しかし、gdb 内からインライン関数を呼び出したいとします。その名前と引数はわかっています。私はそれができるはずだと思いますが、私はこれを得ます:
使用nm
している共有ライブラリのシンボルをリストしていたのですが、呼び出したい関数がそこにないことがわかりました。大きな驚きはありません。私が望むのは、これらのインライン関数の目に見える定義を生成する方法です。現在、インライン定義を含むヘッダー ファイルにアクセスできますが、それらのヘッダーを実際に変更することはできません。おそらく、翻訳単位で見られるすべてのインライン関数の定義を発行するようにコンパイラに指示する方法はありますか? または、gdb のインライン関数の呼び出しと結果の検査を容易にする他のトリックはありますか?
Linux で GCC 4.7.2 と GDB 7.5.1 を使用しています。また、本番環境からコア ダンプをデバッグしているため、最適化されていないビルドに実際に切り替えることはできません (開発中は、最適化をオフにするだけで済みます。そうすれば、作業は簡単になります)。
c++ - インライン関数リンク エラー C++
次のコードを検討してください。
header.h 内
header.cpp 内
main.cpp で
ここで、foo 関数が header.cpp でインラインとして定義されているため、リンク エラーが発生します。'inline' キーワードを削除すると、コンパイルと実行はエラーなしで続行されます。
この「インライン」関数でリンク エラーが発生する理由を教えてください。
c++ - インライン関数と通常の関数
私は C と C++ にかなり慣れていないので、関数について理解しようとしています。インライン関数と呼ばれるこの用語に出くわし、関数がインラインで宣言されると、コンパイラはいつでもどこでも呼び出されたときにその関数にコード全体を貼り付けると理解しました。
これは実際には関数呼び出しで起こることだと思っていましたが、そうではないことに気付きました。
通常の関数が呼び出され、インライン関数が呼び出されたときにコンパイラとシステムレベルで何が起こるかについて、誰かが詳細に説明できますか?
これを理解するための資料は高く評価されます。
vba - VBAでネストされた関数は可能ですか?
次のように、プライベート スコープ内の関数からパラメーターを削除して、コードをクリーンアップしようとしています。
これは可能ですか?外側の関数を終了する前に関数を開始しているため、コンパイラは「Expected End Function」と不平を言います。そして Google は役に立ちません :( PS 私は mainActionHappensHere() の外部で Cleaner() を定義することはできません。なぜなら、正しい L と U がそれに渡されないからです。
c - GCC のオプション -O2 はこの小さなプログラムを壊していますか、それとも未定義の動作をしていますか?
私はこの問題を非常に大きなアプリケーションで発見し、そこから SSCCE を作成しました。-O2
コードに未定義の動作があるか、それとも壊れているかはわかりません。
それをコンパイルすると、 5gcc a.c -o a.exe -O2 -Wall -Wextra -Werror
が出力されます。
ただし、2 つのコメント行のうちの 1 行のコメントを外したり(例: )、コメントを外したり (インライン化を防止)せずにコンパイルすると、 25が出力されます。-O2
-O1
GCC のオプションは-O2
この小さなプログラムを壊していますか、それともどこかで未定義の動作をしていますか?
r - 複数の列に対するddplyインライン関数
ベクトル/列のリストを plyer:ddply インライン関数に渡すにはどうすればよいですか? このコードは機能します:
しかし、私はこのようなことをしたいと思います(エラー、警告をスローします):
アドバイスをありがとう。
c++ - C++ インライン関数に呼び出し命令があるのはなぜですか?
関数呼び出しが行われるインライン関数では、関数呼び出しを関数定義の本体に置き換えることを読みました。
上記の説明によると、ユーザーの場合は関数呼び出しはありませんinline
。
その場合、アセンブリ コードに 3 つの命令が表示されるのはなぜですか?call
ノート
オブジェクトファイルの完全なダンプはこちら