如何在C中添加或重新定义运算符?

时间:2013-03-29 08:27:26

标签: c c-preprocessor operator-keyword inequality redefine

我在几个小时内调试了一个代码,最后发现它使用!=运算符,而我的代码扫描代码将其读作=。多年前我总是在 Pascal 中使用<>运算符。现在我必须在 C 中编写和调试,以使社区可以重用代码。所以我尝试在以下命令中将<>定义为!=

#define <> !=
#define "<>" "!="

但它没有用。我试图在网上搜索,但只有我找到了关于C ++或C#的结果,但我需要 C 。 是否有可能使用<>作为不等运算符编写可重用的 C 代码? (我假设其他normal个用户可以自动将<>替换为!=,但代码应该在其他系统上进行编译而无需修改,即使用<>)。 我使用Linux( gcc )。

5 个答案:

答案 0 :(得分:3)

C没有运算符重载。期。如果您需要该功能,请使用其他编程语言。

答案 1 :(得分:1)

您不能在c。

中重载运算符

答案 2 :(得分:1)

如前所述,C中没有运算符重载(仅在C ++中引入) 但是,您仍然可以选择在编译过程中自动生成<>替换为!=的文件。

答案 3 :(得分:1)

运算符字符不能用于任何对象的名称,即预处理器宏(在您的情况下),变量名称,函数名称...
所以基本上,你不能做这样的事情。你可以看到我的评论,看看为什么这是一个坏主意。

答案 4 :(得分:0)

如果您构建程序,并且c代码中包含以下行之一

#define <> !=
#define "<>" "!="

然后你会得到一个编译错误:

error: macro names must be identifiers

这意味着宏的名称应以字母开头,即使在宏名称中使用某些特殊字符也存在限制。

可能是您可以为您的宏使用其他名称,如:

#define NEQ !=

这是允许的