iPhone開発でプレーンCを使用する場合、コンパイラはregister
と宣言された変数をCPUレジスタに配置しますか?レジスタの宣言はコンパイラによって無視されますか?
答えて
確かにわかる唯一の方法は、コンパイラのドキュメントを見て、それでregister
が何をするのかを記述していなければ、(標準で定義されたパラメータ内で)何かを行うことができます。
register
は、コンパイラの推奨ヒントです。変数が実際にレジスタに配置されることは保証されません。
使用可能なスペアレジスタがない場合でも、変数はスタックに残ります。
私が知りたいのは、常に無視されるか、コンパイラが可能であればそれをレジスタに割り当てることです。 –
それは無視されることはありませんが、言われたように、それは唯一のヒントであり、注文ではありません。 – ydroneaud
@ydroneaudどうやって分かりますか? K&Rでは、「コンパイラはアドバイスを無視してもかまいません」と言われています。私はこのコンパイラが何かをしようとするかどうか知りたいです。 –
register
キーワードはCPUのハードウェアレジスタを参照していません。変数register
の任意の型を宣言でき、ハードウェアレジスタに決して適合しない型も宣言できるので、できません。
このような変数のアドレスを決して使用しないことは、コンパイラと契約しているだけです。あなたからのこのような約束は、コンパイラの最適化の作業を容易にします。特に、変数はエイリアス化することはできません。より一般的には、直接制御フローの外側から変更することはできません。
通知なしにdownowingワウ。そこに何か事実上間違っていますか? –
- 1. 文は完全に無視されます(コンパイラによって省略されたかのように)
- 2. typedef宣言で__attribute__((__packed__))が無視されますか?
- 3. isErrorPage = "false"はコンテナによって無視されます
- 4. DataContractSerializer - XML宣言を無視する
- 5. クラスのメソッド宣言の順序はコンパイラにとって重要ですか?
- 6. [NSBundle mainBundle]によって宣言されているCFStringオブジェクト
- 7. XML検査で宣言された要素が無視される
- 8. TypeScriptのAngular2:@componentの後に宣言されたコンパイラのエラー
- 9. プロキシはMechanizeによって無視されるようですか?
- 10. パペット重複宣言:クラス[Mongodb]は既に宣言されています。再宣言できません
- 11. Capybara + RSpec、spec/features dirはrspecによって無視されます。コマンド?
- 12. コンパイラは宣言の順序を変更できますか?
- 13. C++では、クラスによって使用される配列をどのように宣言しますか?
- 14. コンパイラは終了コマンドの括弧がなくなっても無視します
- 15. SVN無視無視されます
- 16. 私はそのように宣言ネストされたリストの種類持って
- 17. 一見apache2によってDirectoryIndexが無視される
- 18. binding.pryがレールによって無視される3
- 19. using宣言は、using宣言の上に宣言されたオーバーロードだけをインポートしますか?例えば
- 20. structにそのメンバが含まれている場合、メンバエラーはありません。コンパイラが宣言を無視する
- 21. Microsoft.AspNet.Mvc.Formatters.XmlによってXmlElement属性が無視されています
- 22. coutはどこに宣言されていますか?
- 23. ここには何が宣言されていますか?
- 24. カタログヘルパーはどこに宣言されていますか?
- 25. メソッドが見つからない、または宣言されていないことに関するコンパイラ警告
- 26. JPA/Glassfish:persistence.xmlは無視されますか?
- 27. OTHER_CODE_SIGN_FLAGSキーチェーンフラグは無視されますか?
- 28. 無視する方法 "Xの表示されない@interfaceはセレクタを宣言しません"?
- 29. Classクラスは宣言されています/それを宣言する方法はどこですか?
- 30. CSS:hover、:active、:CSSでフォーカス宣言を無視する
AFAIKアップルではgccを使用していますが、私はそれが修正版であると言っている文書を見つけることができませんでした。 –