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
プレビュー