Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;如何将字节*强制转换为证书模板EXT*并在进一步使用前检查结果?_C++_Arrays_Casting - Fatal编程技术网

C++ C++;如何将字节*强制转换为证书模板EXT*并在进一步使用前检查结果?

C++ C++;如何将字节*强制转换为证书模板EXT*并在进一步使用前检查结果?,c++,arrays,casting,C++,Arrays,Casting,我的代码类似于: 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.) 我不知道

我的代码类似于:

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.)

我不知道该用哪种石膏

假设您试图在Windows上进行加密,并且
\u CERT\u TEMPLATE\u EXT
符合定义,则无法可靠地进行检查

您可以查看
structVar->pszObjId
,并检查它是否看起来像一个有效的OID。否则,您的应用程序就会出现严重问题,您需要对其进行调试。(如果指针不是
CERT\u TEMPLATE\u EXT
,则检查将涉及未定义的行为-但使用转换后的值也将涉及未定义的行为,因此情况不会更糟)


通常,您需要在不相关的指针类型之间转换
重新解释\u cast
,但至少GCC似乎只允许从
无符号字符*
执行
静态\u cast
(我这里没有MSVC随时检查)。就我个人而言,我认为我会坚持一个可怕的大的重新解释,你不能这样做。强制转换将始终执行,并且永远不会失败(这只是编译时的事情)。@πάνταῥεῖ:
dynamic_cast
想要一个带有you@LightnessRacesinOrbit不适用于
BYTE
等内部类型。@πάνταῥεῖ: (a) “暗示”是最关键的词,而(b)你说的是“永远”。(c) 即使是编译时强制转换也肯定会失败。@LightnessRacesinOrbit-我要做一个粗略的猜测,并提出
\u CERT\u TEMPLATE\u EXT
是什么。如果我是对的,
BYTE
将是
无符号字符的typedef
。。。在这种情况下,@πάνταῥεῖ “你可以查看structVar->pszObjId,并检查它是否看起来像一个有效的OID”——这在调试器中很清楚。但是我如何在代码中检查它呢?我的下一行代码是:if(strcmp(structVar->pszObjId,myString)==0){//do smth.},它崩溃了:(问题是,您必须对代码进行安排,以便在指针无效的情况下不执行强制转换。您必须调试代码以找出其原因。我的代码正在证书的所有扩展中循环,需要检查pszObjId中的模板字符串。但我不知道扩展是否为模板我的C帽很好,我不能想象C++。你能给我另一个线索吗?