在我正在进行的项目中,我已经定义了一个基本enum来存储应用程序可能遇到的错误列表.但是,我想找到一种方法来返回描述错误的字符串.
这是我正在使用的枚举:
enum _library_results_enum{
LIB_SUCCESS = 1,
LIB_FAIL,
LIB_NULL_PARAM,
LIB_MALLOC_ERROR,
LIB_TIMEOUT,
LIB_CONNECTION_CLOSED
}
Run Code Online (Sandbox Code Playgroud)
如果函数返回的结果不是LIB_SUCCESS,那么理想情况下我希望能够说:
printf("Error Description: %s\n", ERROR_DESCRIPTIONS[RESULT]);
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我想我需要一个static const *char[]包含所有描述的数组.但是,enum值不会从零(0)开始,最终我可能会为此枚举添加一些负值.因此,使用字符串数组实际上不是一种选择.我还能做些什么来处理这件事?
我考虑过只创建一个使用switch语句返回描述的函数.但是,如果没有更好的选择,这实际上只是一个后备解决方案.
编辑:为了更好地说明,我需要的是一种将枚举中的结果代码与描述它们的字符串相关联的方法.
今天,我试图让我的Kali Linux虚拟机只对我自己的VPS进行基本的漏洞检查.我将我的Kali Linux虚拟磁盘映像(VDI)保存在USB外部驱动器上,所以我将其插入,启动Virtual Box,但是当我启动它时出错了.看起来此驱动器的驱动器号已从更改F:为E:.因此,VirtualBox无法从中检索VDI F:\Kali Linux VM\.
我试图自行解决这个问题,我决定打开虚拟机设置,删除F:驱动器上注册的SATA控制器VDI,然后从E:驱动器添加VDI (相同的VDI,只是驱动器号的差异).然而,这并没有按计划顺利进行.我能够毫无问题地删除不正确的VDI路径,但是当我尝试在正确的路径上添加VDI时,我收到以下错误:
无法注册硬盘'E:\ Kali Linux VM\Kali Linux.vdi'{6b214e73-ae38-427b-90f8-995c7dd4211c},因为硬盘'F:\ Kali Linux VM\Kali Linux.vdi'带有UUID {6b214e73 -ae38-427b-90f8-995c7dd4211c}已经存在.
结果代码:E_INVALIDARG(0x80070057)组件:VirtualBoxWrap接口:IVirtualBox {0169423f-46b4-cde9-91af-1e9d5b6cd945} Callee RC:VBOX_E_OBJECT_NOT_FOUND(0x80BB0001)
看起来我无法将VDI添加回VM,因为它与我删除的VDI相同.
还有其他人遇到过像这样的问题吗?有没有人有解决方案,所以我不会丢失该VM上的所有数据?
谢谢大家.
注意:我知道这不是一个编程问题,所以这可能是错误的Stack Exchange.如果这更适合在不同的Stack Exchange站点下,请告诉我.
最近,我一直在开发一个小型项目,需要能够在另一个图像中找到子图像的X和Y坐标.图像可能具有不同的分辨率,但总体而言图像分辨率相似且颜色应相同.我已经研究过OpenCV,但似乎OpenCV只返回一个匹配.我需要在超级图像中找到子图像的所有出现/实例.我已经拥有了所有要搜索的子图像,因此我只需要一种方法来查找超级图像中子图像的坐标.
这是我的意思的一个例子:
如果我们有red_circle.png:

并且shapes.png:

我需要获得各种形状(超级图像)图片中所有红色圆圈(red_circle.png;子图像)的X和Y坐标shapes.png.
理想情况下,我希望能够做到这样的事情:
/* code to read in red_cirlce.png and shapes.png as BufferedImages */
ArrayList<Point> instancesOfRedCircle = new ArrayList<>();
findAllSubimageInstances( shapesObj, // Super-Image
redCircleObj, // Subimage
instancesOfRedCircle // ArrayList to put points in
);
Run Code Online (Sandbox Code Playgroud)
有没有人知道这样做的方法(例如,库,函数等)?