Bru*_*ano 3 c c++ random variables
想象一下,如果出于任何原因,您想要创建多个变量,而不使用数组,并且它们必须具有不同的名称.从逻辑上讲,您不会创建空变量并仅在需要时设置500.
简而言之,可以生成具有相同名称的变量而无需随机使用数组或向量?
如果可能的话,我想要实例化逻辑或C或C++.
我尝试过这种方法(在C中),但不起作用:
#include <stdlib.h> // for random
#define RANDOM random(100)
int main ( void )
{
int n/**/RANDOM = 5;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
可能是较旧的编译器工作,因为他们删除了评论.当前的编译器将注释视为空格.
至少在最近的GCC上,你可以使用像
#define NEWVAR_NUM(Var,Num) { static int Var_##Num; foo(&Var_##Num); }
#define NEWVAR(Var) NEWVAR_NUM(Var,__COUNTER__)
Run Code Online (Sandbox Code Playgroud)
在其他(或使用标准符合)编译器上,您可以使用__LINE__
而不是__COUNTER__
.请参阅GCC的常见预定义宏和cpp的串联
此外,您可以考虑生成这样的人为C代码,例如m4或您自己的生成器(可以是十行脚本或100K行生成器).
你可以尝试这样的事情:
#define CONCAT_INTERNAL(a, b) a ## b
#define CONCAT(a, b) CONCAT_INTERNAL(a, b)
int CONCAT(var, __LINE__);
int CONCAT(var, __LINE__);
int CONCAT(var, __LINE__);
Run Code Online (Sandbox Code Playgroud)
所述间接通过CONCAT_INTERNAL
是必要的,因为否则令牌var
和__LINE__
所述之前被级联__LINE__
进行评价.
这种预处理器技巧被广泛使用,例如在NetBSD中.
您的程序的生命周期是:
对随机的调用只能在执行阶段进行.您正在尝试在预处理阶段执行此操作.期间不行.
关于你的问题 - 它没有任何意义,解释你想要达到的目标是什么.
归档时间: |
|
查看次数: |
2220 次 |
最近记录: |