在玩了一点 C 预处理器之后,我想到了一种方法来拥有类似于具有控制结构的 Pythonian 的东西,定义如下:
#define with(var) for(int i##__LINE__=0;i##__LINE__<1;)for(var;i##__LINE__<1;++i##__LINE__)
示例用法:
#include <cstdio>
#include "FileClass.hpp"
#include "with.hpp"
int main(){
with(FileClass file("test.txt")){
printf("%s\n",file.readlines().c_str());}
return 0;}
这个想法是双重嵌套的 for 循环有一个外部混淆迭代变量,该变量在内部循环中递增一次以中断它。这会导致以下代码在其范围内执行一次 var。
这有什么缺点吗?如果我对迭代变量进行了足够的混淆,则几乎不会有名称冲突的可能性,它仅使用标准预处理器功能,似乎没有任何事与愿违的可能性,而且很容易理解。
这似乎好得令人难以置信——有什么理由不到处使用吗?