問題タブ [weak-symbol]

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 投票する
0 に答える
204 参照

c++ - `__attribute__((weak))` に相当する Windows は何ですか?

GNU プロジェクトを Windows に移植しようとしていますが、次の GNU 構文に出くわしました...

これに相当する Windows は何ですか、または Windows は弱いシンボルをどのように処理しますか?

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

c - 弱いシンボル属性と extern 宣言

GCC でコンパイルされた ARM アセンブリ コードを次に示します。

からのスニペットstartup.s:

file1.c

このコードでPOWER_CLOCK_IRQHandlerは、 は弱いシンボルです。コードが実行されると、コード fromfile1が実行されます。

ここDefault_Handlerで、別のファイルで定義し、その定義を .xml でコメントアウトしますstartup.s

ファイル 3:

の定義をDefault_Handler別のファイルに記述したりDefault_Handler、weak として宣言したりすると、POWER_CLOCK_IRQHandlerは に対してリンクされDefault_Handlerます。POWER_CLOCK_IRQHandlerリンカは弱い属性を見逃しており、 でそれをリンクしません。file1.cで指定された式を解決しようとしました.set

誰かが正確に何が起こるか説明できますか? 実装が 以外のファイルにPOWER_CLOCK_IRQHandlerある場合に弱い属性を有効に保つための適切な解決策は何ですか?Default_Handlerstartup.s

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

objective-c - シンボルの存在をチェックするときに否定演算子を使用できないのはなぜですか?

この質問への回答if (x != nil)、 と同じですif (x)

しかし、Apple のドキュメントには次のように書かれています。

注: シンボルの存在を確認するときは、コード内で明示的に NULL または nil と比較する必要があります。否定演算子 ( ! ) を使用してシンボルのアドレスを否定することはできません。

https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithObjects/WorkingwithObjects.html#//apple_ref/doc/uid/TP40011210-CH4-の「nilでの作業」と矛盾しているようですSW22

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

gcc - -qnoweakexp xlC コンパイラ フラグに相当する gcc は何ですか?

現在、AIX と xlC コンパイラから Linux と GNU ツールチェーンに移行しています。C/C++ コンパイル プロセスでは、-qnoweakexpコンパイラ フラグを使用して弱いシンボルのエクスポートを無効にします。xlc コンパイラ リファレンスを参照してください。

gcc Options Summaryに同等のコンパイラ フラグが見つかりません。最終的な目標は、弱いシンボルがコンパイル ターゲットにエクスポートされないようにすることです。私が見つけた最も近い gcc フラグは でしたが-fno-weakgcc のマニュアルには、このフラグは製品コードでの使用を意図していないと記載されています。

背景: コンパイル ターゲットで使用しているフレームワークのいくつかの C ライブラリとリンクする必要があります。これらのライブラリは、このフラグを使用しないコードで同じ弱いシンボルをエクスポートします。これにより、セグメンテーション違反が散発的に発生しました。これらのシンボルは、使用している一部の STL コンテナー用に生成されたようです。たとえば、次のようになります。

つまり、一部のシンボルがソース コードで弱いと明示的に注釈されている場合ではなく、そのため、注釈を削除しても問題を解決することはできません。