は、私は次のような方法の一つが定義されているCソースファイルがありますか?私の知っている限りでは、「無効」は何も返されません。それで、法的声明ですか?無効と戻り値の型
無効と戻り値の型
答えて
QDECLの定義を確認しました。それは、
#define QDECL __cdecl
は、今すぐあなたの宣言はなりまだ voidを返す関数である
void __cdecl prettyPrintf(int level)
です。
実際、QDECL
は、関数の戻り値の型を変更せずに(理論的に)他の形式をとることができます。呼び出し[それが展開するだろう - それは簡単に今、あなたの関数のプロトタイプがvoid
返す関数
QDECL
は、呼び出し規約を定義します。これは、ヘッダファイルの1つに定義されたマクロで、__cdecl
または__stdcall
のように評価されます。
これは、関数の戻り値の型に関係しません。この機能はまだvoid
の機能です。コメントで
あなたの状態:ここ
私の関心は、JavaへのIポートが上記のコードならば、私はこれの世話をする必要がないということですか?
いいえ。これは純粋に異なるネイティブのコードライブラリ間のインタフェースとしての問題です。コードがJavaになったら、単に呼び出し規約を無視できます。
実行時にどのような利点がありますか?パフォーマンスの向上は?またはそれは専門家のコーディングスタイルですか? – UVM
@UNNIパフォーマンスや利点、コーディングスタイルの問題ではありません。あるライブラリと別のライブラリの間でバイナリコントラクトを定義する必要があります。これは共有ライブラリにエクスポートされる関数です。したがって、すべての当事者は、関数を呼び出すときに同じ規則を使用する必要があります。呼び出し規約はそれらの規則をコード化します。これを読んでください:http://en.wikipedia.org/wiki/Calling_convention –
QDECL
はおそらくcalling conventionのヒント(たとえば__cdecl
または__stdcall
)に解決されるプリプロセッサマクロです。これは、コールスタックにパラメータをプッシュ/クリーンアップする方法を定義しますが、関数の戻り値の型は変更しません。クライアントとは異なるデフォルトの呼び出し規約を使用するライブラリを使用する場合、主に相互運用性のために使用されます。
- 1. sbt console/Scalaの戻り値の型を無効にするREPL
- 2. Javaエラー - 「無効なメソッド宣言、戻り値の型が必要」
- 3. 無記号は、戻り値の型「MKOverlayRenderer」
- 4. Linqと戻り値の型
- 5. AsyncTaskの戻り値の型onPostExecuteメソッドは無効ではありませんか?
- 6. 戻り値の型
- 7. 戻り値の型
- 8. 戻り値型インターフェイス
- 9. デフォルトエンティティを無効にするWCFデータサービスで戻り値の型を追加する
- 10. Scalaの戻り値の型
- 11. 静的戻り値の型
- 12. ジェネリック戻り値の型
- 13. は、戻り値の型
- 14. JavascriptとMVC戻り値の型
- 15. Javaジェネリックと戻り値の型
- 16. Haskellの戻り値の型多型
- 17. パラメータの型 - >戻り値の型
- 18. Javaの戻り値の型enum値
- 19. この戻り値の型はなぜ有効ですか?
- 20. g ++の戻り値の最適化を無効にする
- 21. マップされたストアドプロシージャの無効な戻り値タイプ
- 22. actionscriptのジェネリック(戻り値の型はパラメータ型と同じ)
- 23. DynamicData:戻り値の型としてカスタム型を使用
- 24. デフォルトのCのboolean型の戻り関数の戻り値++
- 25. スレッドオブジェクトのgetId()の戻り値の型
- 26. クロージャの戻り値の型構文
- 27. jQueryデータ型の戻り値のグループ化
- 28. 空の戻り値の型C++
- 29. グラフAPIの戻り値の型はANDROID
- 30. java generics - メソッドの戻り値の型
GoはQDECLの定義を見つけることはまだある
ある
されている可能性が大会](http://en.wikipedia.org/wiki/Calling_convention)。戻り値の型とは何も関係ありません。 –
私はそれについて聞いたことがありませんが、それは__cdeclのエイリアスのようです。 –
私の心配はここにあります。上記のコードをJavaに移植すると、これを処理する必要がありますか? – UVM