hft*_*hft 6 c++ windows c-preprocessor
我遇到了一些代码:
BOOL CBlahClass::SomeFunction(DWORD *pdw)
{
RETURN_FALSE_IF_FILE_DOESNT_EXIST
//the rest of the code makes sense...
//...
}
Run Code Online (Sandbox Code Playgroud)
我看到的一切都很有意义,除了我对RETURN_FALSE_IF_FILE_DOESNT_EXIST这一行有一点疑问
我搜索了这个字符串,然后找到#define:
#define RETURN_FALSE_IF_FILE_DOESNT_EXIST \
if (FALSE==DoesFileExist()) return FALSE;
Run Code Online (Sandbox Code Playgroud)
我的问题是......到底是什么?有没有什么好的理由让#define像这样?为什么不写:
BOOL CBlahClass::SomeFunction(DWORD *pdw)
{
if ( FALSE == DoesFileExist() ) return FALSE
//the rest of the code makes sense...
//...
}
Run Code Online (Sandbox Code Playgroud)
我能想到的这样做的唯一原因是,它是一个稍微容易一点和小写出来"RETURN_FALSE_IF_FILE_DOESNT_EXIST",然后写出来,"如果(FALSE == DoesFileExist())返回FALSE"更讨人喜欢.
有人看到任何其他理由这样做?这种东西有名字吗?
好吧,使用宏的想法是在特定检查可能发生变化的情况下简化维护.当你有一个宏时,你需要改变的只是宏定义,而不是遍历整个程序并单独更改每个检查.此外,它使您有机会通过更改宏定义来完全消除此检查.
通常,当一个人具有相当全面的重复代码片段时,通常会将该代码分离为一个函数.但是,当重复的代码片段必须执行某些非正统操作时,就像return退出封闭函数一样,宏基本上是唯一的选择.(有人可能会同意这样的技巧应该保留给调试/维护/系统级代码,并且应该在应用程序级代码中避免使用.)
| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |