1

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

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

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

4

5 回答 5

3

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

于 2013-03-29T08:30:39.457 回答
1

You can't overload operator in c.

于 2013-03-29T08:31:13.913 回答
1

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

于 2013-03-29T08:35:17.977 回答
1

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

于 2013-03-29T08:38:28.917 回答
0

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

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

那么你会得到一个编译错误:

error: macro names must be identifiers

这意味着您的宏的名称应该以字母开头,甚至在宏名称中使用一些特殊字符也是有限制的。

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

#define NEQ !=

这是允许的

于 2013-03-29T09:33:13.713 回答