RegOpenKeyEx()
我想 printf("Success") 或 printf("Failure") 取决于函数是失败还是成功
我将如何在保持整洁和易读的同时做这样的条件?
我想远离这个:
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,"HUGE LONG KYEY STRUCTURE HERE",0,KEY_SET_VALUE) != 0 )
{
//CODE
}
RegOpenKeyEx()
我想 printf("Success") 或 printf("Failure") 取决于函数是失败还是成功
我将如何在保持整洁和易读的同时做这样的条件?
我想远离这个:
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,"HUGE LONG KYEY STRUCTURE HERE",0,KEY_SET_VALUE) != 0 )
{
//CODE
}
您是在问如何检查它失败的原因吗?
“Winerror.h 中定义的非零错误代码表示失败。要获取错误的一般描述,请调用设置了 FORMAT_MESSAGE_FROM_SYSTEM 标志的 FormatMessage。”
所以.. ERROR_SUCCESS 如果成功,错误代码如果失败。
您可以使用换行符,或命名事物或两者兼而有之,
LONG result = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"HUGE LONG KYEY STRUCTURE HERE",
0,KEY_SET_VALUE);
if(result != 0 ) {
...
也许
LPCTSTR keypath = "HUGE LONG KYEY STRUCTURE HERE";
if( RegOpenKeyEx(HKEY_LOCAL_MACHINE,keypath,0,KEY_SET_VALUE) != 0 ) {
...
检查未编辑的问题后,我认为您唯一能做的就是将语句分解为多个语句,如下所示:
const char* regKey = "BIG_STRING......";
DWORD errorCode = RegOpenKeyEx(...);
if(ERROR_SUCCESS == errorCode)
{
//Rest of the code
}
else
{
//Error handling
}
您可以改为使用三元运算符:
bool success = (RegKeyOpenEx(...) == ERROR_SUCCESS);
printf("%s\n", success ? "Success" : "Failure");
不成功时不返回 ERROR_SUCCESS。你是这个意思吗?
对于错误代码的多次检查,请使用:
LONG errors = 0;
errors += abs( RegKeyOpenEx(HKEY_LOCAL_MACHINE,"HUGE LONG KYEY STRUCTURE HERE",0,KEY_SET_VALUE) );
errors += abs( RegKeyOpenEx(HKEY_LOCAL_MACHINE,"HUGE LONG KYEY STRUCTURE HERE",0,KEY_SET_VALUE) );
errors += abs( RegKeyOpenEx(HKEY_LOCAL_MACHINE,"HUGE LONG KYEY STRUCTURE HERE",0,KEY_SET_VALUE) );
errors += abs( RegKeyOpenEx(HKEY_LOCAL_MACHINE,"HUGE LONG KYEY STRUCTURE HERE",0,KEY_SET_VALUE) );
errors += abs( RegKeyOpenEx(HKEY_LOCAL_MACHINE,"HUGE LONG KYEY STRUCTURE HERE",0,KEY_SET_VALUE) );
if( errors > 0 )
{
print( "OMG It went wrong!\n" );
}
else
{
print( "Hero!\n" );
}