这个问题涉及到在Vulkan-Hpp(官方的Vulkan C++绑定)中的异常处理。
我使用了带有异常处理程序的Vulkan-Hpp编写了一个小应用程序,但在遇到这个stackoverflow问题之后(C++中的异常真的很慢吗?),我开始担心在那里使用异常的惩罚。然后我发现了定义
我使用了带有异常处理程序的Vulkan-Hpp编写了一个小应用程序,但在遇到这个stackoverflow问题之后(C++中的异常真的很慢吗?),我开始担心在那里使用异常的惩罚。然后我发现了定义
VULKAN_HPP_NO_EXCEPTIONS
,但它会完全改变所有可能引发异常的调用的语法(因为返回值不同):这意味着,在开始实现之前必须决定是否使用VULKAN_HPP_NO_EXCEPTIONS
(即它们不能轻松地在“Debug”配置中启用,在“Release”配置中禁用)。
如果通过定义
VULKAN_HPP_NO_EXCEPTIONS
来禁用异常处理,ResultValue<SomeType>::type
是一个包含返回值和错误代码的结构体,分别存储在result和value字段中。
即
surface = instance.createWin32SurfaceKHR(surfaceCreateInfo);
变成
vk::ResultValue<vk::SurfaceKHR> surfaceResult = instance.createWin32SurfaceKHR(surfaceCreateInfo);
if (surfaceResult.result == vk::Result::eSuccess) {
surface = surfaceResult.value;
}
鉴于在开发的后期更改关于VULKAN_HPP_NO_EXCEPTIONS
策略并不容易,我想知道在哪些情况下应该为我的项目使用VULKAN_HPP_NO_EXCEPTIONS
,在哪些情况下不应该使用?
我认为除了个人品味/意见之外,必须有一些技术理由。