我的代码类似于:
BYTE *byteVar;
_CERT_TEMPLATE_EXT *structVar;
// assign byteVar
structVar = (_CERT_TEMPLATE_EXT*)byteVar;
// Here I would like to check if in the byteVar there is a _CERT_TEMPLATE_EXT * or not;
// (if the cast was successfull or not.)
我不知道应该使用什么样的演员表。
答案 0 :(得分:0)
假设您尝试在Windows上执行加密,_CERT_TEMPLATE_EXT
与定义here一致,那么您无法可靠地检查。
您可以查看structVar->pszObjId
,并检查它是否看起来像是有效的OID。如果没有,那么应用程序的问题就出现了严重问题,您需要对其进行调试。 (如果指针不是一个CERT_TEMPLATE_EXT
,则检查将涉及未定义的行为 - 但是使用转换后的值也是如此,因此您不会更糟糕。)
一般情况下,您需要reinterpret_cast
在不相关的指针类型之间进行投射,但至少GCC似乎只允许来自static_cast
的{{1}}(我在这里没有MSVC)随便检查一下。就个人而言,我认为我会坚持一个可怕的unsigned char *
。