問題タブ [function-attributes]
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++ - __attribute__ ((pure)) として宣言された関数は、新しく構築された std::string を返すことができますか?
GCC コンパイラを使用した C/C++ の gnu の世界では、共通関数属性"pure" があります (これは "const" 属性に似ていますが、制限は少ないです)。
多くの関数は戻り値以外には影響を与えず、それらの戻り値はパラメーターやグローバル変数のみに依存します。... 純粋関数の一般的な例として、strlen や memcmp があります。... pure 属性は、 const 属性よりも関数の定義に似ていますがより緩い制限を課します: 関数がグローバル変数を読み取ることを許可します。... 純粋な関数は副作用を持つことができないため、そのような関数が void を返すことは意味がありません。
orのような C++ STL コンストラクターを純粋な関数で呼び出すことは許可されていますstd::string
かstd::vector
? たとえば、このコードは合法ですか?なぜそうでないのですか? (それは合法__attribute__((const))
でしょうか?)
複雑な std::sting コンストラクターへの呼び出しがいくつかあります。これは、メモリを割り当て、空きメモリと割り当てられたメモリを管理するために使用されるいくつかのグローバル変数に書き込む場合があります。
たとえば、"/"
and"\\"
定数の長さを 100 文字に変更した後、コンストラクターからnew
and を呼び出します。malloc(101)