C言語 C++ 戻り値設計について
C言語 C++の戻り値の設計で
"見知らぬ値をint
型で返す"
ような設定でなくenum
型で返すライブラリなどがモダン?(昔からあると思いますが)だと思います。
例えばグラフィックスライブラリVulkanの戻り値VkResult
や
GPGPUライブラリCUDA言語のcudaError_t
などが使われています。
enum
は強力だと思いますがnamespace
が効かないため、被らないように
VkResult
であればVK_ERROR_INITIALIZATION_FAILED
のような長い列挙子を書かなくてはなりません。
仕様かどうかは知らないですがVC++はenum
であってもnamespace
のように
VkResult::VK_ERROR_INITIALIZATION_FAILED
と打てばVkResult::
の時点で予測変換で表示してくれて便利でコンパイルは通ります。
しかしgccなどではコンパイルできませんよね?
それならnamespace
もあってenum
のような長い列挙子も必要がないenum class
に軍配が上がると思うのですが
(static_cast
が必要などはともかく)
(1) 戻り値としてenum class
を利用することはあまりないのでしょうか?
(2) デメリットはC言語で利用できないという一点でしょうか?
(3) enum class
を使うことでenum
より速度が落ちるなどあるのでしょうか? (プリプロセッサーが捌く範囲で関係ないでしょうか?)
(4) また何かこういう戻り値設計が綺麗だったとかこういうガイドラインがあるとかありましたら教えてください
環境
VC++14
g++14
(特別にバージョンは問わない)
回答1件
あなたの回答
tips
プレビュー