我经常在C / C ++中使用这个宏:
#define MYLOG(x) (std::cout << "Value of " << #x << " is: " << x << std::endl);
它的用法如下:
int x = 1;
int y = 2;
MYLOG(x+y);
结果如下:
Value of x+y is: 3
我还没有用任何不使用C预处理器的语言复制它。是否可以使用任何其他语言?我希望能够在其他地方开始使用它。注意:eval不算数。我希望在我的代码中看到表达式,而不是字符串,这样我仍然可以使用语法高亮和自动完成。
答案 0 :(得分:1)
不,在C和C ++中,编译器都会删除符号信息。 #x
在预处理器中创建一个字符串,编译器会保存字符串。
具有更强反射能力的其他语言可以提供反映表达的能力。特别是,纯解释语言只使用字符串表示,因此它们可以轻松地打印出来。但是,您反对eval
的地方。我不明白为什么,有些语言是100%eval
。