我调试了一个代码几个小时,最后发现它使用!=
操作符,而我的眼睛扫描代码时将其读取为=
。多年前Pascal中一直使用<>
算子。现在我必须在C中编写和调试代码,以使代码可被社区重用。因此,我尝试在以下命令中将<>
定义为!=
:
#define <> !=
#define "<>" "!="
但它没有工作。我试着在网上搜索,但只有我发现关于c++或c#的结果,但我需要它C。是否有机会使用<>
作为不等式操作符编写可重用的C代码?(我假设其他normal
用户可以自动将<>
替换为!=
,但代码也应该在其他系统上编译而无需修改,即使用<>
)。我使用Linux (gcc)
C语言没有操作符重载。时期。如果您需要该功能,请使用其他编程语言。
操作符字符不能在任何对象的名称中使用,即预处理宏(在您的情况下),变量名,函数名…
所以基本上,你不能这样做。你可以看看我的评论,看看为什么这是一个坏主意。
c中不能重载操作符
如前所述,C中没有操作符重载(它仅在c++中引入)但是,您仍然可以选择在编译过程中自动生成<>
替换为!=
的文件。
如果在构建程序时,c代码中包含以下一行
#define <> !=
#define "<>" "!="
,你会得到一个编译错误:
error: macro names must be identifiers
意味着宏的名称应该以字母开头,甚至在宏的名称中使用一些特殊字符也是有限制的。
可以是你可以为你的宏使用另一个名字,比如:
#define NEQ !=