Con*_*ode 0 c++ python control-structure
在使用C预处理器玩了一下后,我想到了一种类似于具有控制结构的Python的方法,定义如下:
#define with(var) for(int i##__LINE__=0;i##__LINE__<1;)for(var;i##__LINE__<1;++i##__LINE__)
Run Code Online (Sandbox Code Playgroud)
样品用法:
#include <cstdio>
#include "FileClass.hpp"
#include "with.hpp"
int main(){
with(FileClass file("test.txt")){
printf("%s\n",file.readlines().c_str());}
return 0;}
Run Code Online (Sandbox Code Playgroud)
这个想法是一个双嵌套的for循环有一个外部混淆的迭代变量,它在内部循环中递增一次以打破它.这会导致以下代码在其范围内使用var执行一次.
这有什么缺点吗?如果我足够混淆迭代变量,几乎没有机会发生名称冲突,它只使用标准的预处理器功能,似乎没有任何反击的可能性,而且很容易理解.
几乎看起来好得令人难以置信 - 有什么理由不在任何地方使用它吗?
有没有什么理由不在任何地方使用?
是的,C++不是Python,如果我正确理解你的代码,那就完全一样了:
{
FileClass file("test.txt");
printf("%s\n", file.readlines().c_str());
}
Run Code Online (Sandbox Code Playgroud)
那么,有什么缺点呢?不自然的语法,用于代码混淆的预处理器的使用,使用更多的样板代码实现与上面相同的东西,以及单一使用C++.足够?
C++具有非常重要的值类型概念和基于范围的堆栈变量的确定性破坏.这导致了非常重要的习惯用语,如SBRM(范围限制资源管理,也称为RAII).