【发布时间】:2014-04-16 03:59:00
【问题描述】:
据我了解,有几种语言使用:= 作为赋值运算符。这样做是为了避免与== 运算符混淆。这对我来说似乎是一个非常有效的观点,所以我正在考虑如何用 C 之类的语言来实现它。这就是我的想法。
#define := =
// ... later on
int x := 4;
虽然这会起作用(如果预处理器支持该语法),它仍然允许我使用= 运算符。所以我的问题是,有没有办法“标记”符号或运算符/有没有办法阻止使用某些已定义的运算符或符号?再次,这就是我的想法,但是我不知道这在句法/语义上的合法性。
#undef =
【问题讨论】:
-
不要。只是不要....
-
运算符不是 C 中的标识符,它们是保留字。这不应该工作,感谢上帝。要使其正常工作,您至少需要编写自己的预处理器。
-
你是对的。众所周知,即使是非常有经验的 C 编码人员也会陷入 =/== 问题。我同意@MitchWheat 的观点,即按照您的建议去做不是一个好主意;主要是因为它使下一个人很难尝试维护代码。相反,我采取了不同的方法。例如,当我与常数进行比较时,我总是将常数放在首位。即:if(4 == x)... 而不是 if(x == 4)。如果我写错了 if(4 = x),编译器会报错。
-
顺便说一句,编译器通常会抱怨 if(x=4); 语句。由于这是一个常见的错误[为了消除编译器的抱怨,你必须把它写成:if((x=4))]。
标签: c operators c-preprocessor operator-keyword