据我所知,有几种语言使用:=
作为赋值运算符。实现这一点可能会避免与==
运算符混淆。这对我来说似乎是一个非常有效的观点,所以我在考虑如何用 C 这样的语言来实现它。这就是我的想法。
#define := =
// ... later on
int x := 4;
虽然这可行(如果预处理器支持该语法),它仍然允许我使用=
运算符。所以我的问题是,有没有办法让#34;标记"一个符号或运算符/有没有办法阻止使用某些定义的运算符或符号?同样,这是我的想法,但我不知道这个的语法/语义合法性。
#undef =
答案 0 :(得分:1)
标准C不允许' ='赋值运算符未定义或已更改。但是,可以使用几个C编译器的源代码;并且欢迎您自己修改C编译器的构建。包括更改' ='到':='。祝你好运!
答案 1 :(得分:1)
好问题,但不要这样做。您的方法导致可读性差。
答案 2 :(得分:1)
#define := =
宏名称只能是标识符。如果任何C编译器接受该定义,我会感到非常惊讶。原则上,编译器可以接受它作为语言扩展,但是例如gcc没有。任何符合要求的C编译器必须至少发出诊断信息。
你说它有效;我坦率地持怀疑态度。你使用什么编译器?
#undef =
同样的问题。
我可以看到(甚至同意)您的观点,即使用:=
而不是=
作为赋值运算符会更好。但是使用预处理器来改变这样的语言,即使在它工作的情况下,也不是一个好主意。
C程序员知道=
意味着分配。阅读代码的任何人都可能会猜到:=
意味着要进行分配,但这只会使您的代码难以阅读。