当我包含标准向量库时,我看到了一些非常奇怪的行为。谁能告诉我是什么导致了这些失败?我踩到了谁的脚趾,我应该注意这个错误的一般情况吗?
我正在使用ROOT C++ 解释器。从命令行解释器界面或编译代码,
$ root -l
root [0] #include <vector>
root [1] float max = -1.15;
root [2] if (max < -1 && max > -1.2) max = 2;
Error: Variable name has bad character 'max<-1&&max>-1207' (tmpfile):1:
Error: Symbol max<-1&&max>-1207 is not defined in current scope (tmpfile):1:
Error: Variable name has bad character 'max<-1&&max>-1' (tmpfile):1:
Error: Symbol max is not defined in current scope (tmpfile):1:
Error: non class,struct,union object $max<-1&&max>-1 used with . or -> (tmpfile):1:
*** Interpreter error recovered ***
root [3] max
(float)(-1.14999997615814209e+00)
然后,如果我添加一些不应该做任何事情的括号:
root [4] if ((max < -1) && (max > -1.2)) max = 2;
root [5] max
(float)2.00000000000000000e+00
root [6] .qqqqqqqqqqqq
如果我只是正常退出root,root seg-faults。如果我不包括它,它应该可以工作:
[abarker@cmslpc29 macro]$ r
root [0] float max = -1.15;
root [1] if (max < -1 && max > -1.2) max = 2;
root [2] max
(float)2.00000000000000000e+00
此外,如果我将变量名称更改为“max”以外的名称,问题就会消失。