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

如何在C中添加或重新定义运算符?,c,c-preprocessor,operator-keyword,inequality,redefine,C,C Preprocessor,Operator Keyword,Inequality,Redefine,我调试了一个代码几个小时,最后发现它使用了=操作员,当我的眼睛扫描代码时,它读作=。多年前,我总是在Pascal中使用运算符。现在我必须在C中编写和调试代码,以使社区可以重用代码。所以我试着把定义为=在以下命令中: #define <> != #define "<>" "!=" #定义= #定义“”!=” 但它没有起作用。我试图在网上搜索,但我只发现了关于C++或C语言的结果,但是我需要它来< c>强>。 是否有机会使用作为不等式运算符编写可重用的C代码?(我假设其

我调试了一个代码几个小时,最后发现它使用了
=操作员,当我的眼睛扫描代码时,它读作
=
。多年前,我总是在Pascal中使用
运算符。现在我必须在C中编写和调试代码,以使社区可以重用代码。所以我试着把
定义为
=在以下命令中:

#define <> !=
#define "<>" "!="
#定义=
#定义“”!=”
但它没有起作用。我试图在网上搜索,但我只发现了关于C++或C语言的结果,但是我需要它来< <强> c>强>。 是否有机会使用
作为不等式运算符编写可重用的C代码?(我假设其他
普通
用户可以自动将
替换为
!=
,但代码也应在其他系统上编译,无需修改,即使用
)。
我使用Linux(gcc)。

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

C没有运算符重载。时期使用不同的编程语言,如果你需要这个特性。

< P>不能在C.

< P>中加载运算符。P>你不能在C.

< P>中重载运算符,正如前面所说的,C中没有操作符重载(它只在C++中被引入)。
但是,您仍然可以选择自动生成文件,并将
替换为
=编译过程中,

以前说过,C中没有操作符重载(只是在C++中引入)
但是,您仍然可以选择自动生成文件,并将
替换为
=

运算符字符不能用于任何对象的名称,即预处理器宏(在您的情况下)、变量名、函数名…

所以基本上,你不能做这样的事。您可以查看我的评论,看看为什么这是个坏主意。

运算符字符不能用于任何对象的名称,即预处理器宏(在您的情况下)、变量名、函数名……

所以基本上,你不能做这样的事。您可以查看我的评论,看看为什么这是一个坏主意。

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

#define <> !=
#define "<>" "!="
这意味着您的宏的名称应该以字母开头,甚至在宏的名称中使用一些特殊字符也有限制

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

#define NEQ !=

如果您构建了程序,并且c代码中包含了以下行之一,那么这是允许的

#define <> !=
#define "<>" "!="
这意味着您的宏的名称应该以字母开头,甚至在宏的名称中使用一些特殊字符也有限制

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

#define NEQ !=

允许使用无效的预处理器宏名称。如果您想编写可理解的C代码,那么就按照标准编写代码。不要使用这样的东西。让我们与真正的语言进行比较。说你不想学西班牙语。在西班牙语中,cat是
un-gato
,但事实上,你不喜欢
gato
这个词,所以你想继续使用好的古英语
cat
。你可以看到事物下面的纯粹邪恶;)即使你能做到这一点,这也是一个非常糟糕的主意。。。让你的代码可以被其他人阅读。这里的人们正在谈论操作符重载,这是奇怪的,这与C或C++中的操作符无关。嗨,朋友们,谢谢你们的回答。我现在知道我想要的是
重载
,而不是
重定义
操作符(因此我现在可以找到其他类似的主题已经回答了)。现在我明白了为什么它不好了。我将尝试定义NEQ=,NEQ看起来很有用。但我将只在本地执行,并将在共享代码时替换为标准。再次为我奇怪而疯狂的问题感到抱歉!这将是一个无效的预处理器宏名称。如果您想编写可理解的C代码,那么就按照标准编写代码。不要使用这样的东西。让我们与真正的语言进行比较。说你不想学西班牙语。在西班牙语中,cat是
un-gato
,但事实上,你不喜欢
gato
这个词,所以你想继续使用好的古英语
cat
。你可以看到事物下面的纯粹邪恶;)即使你能做到这一点,这也是一个非常糟糕的主意。。。让你的代码可以被其他人阅读。这里的人们正在谈论操作符重载,这是奇怪的,这与C或C++中的操作符无关。嗨,朋友们,谢谢你们的回答。我现在知道我想要的是
重载
,而不是
重定义
操作符(因此我现在可以找到其他类似的主题已经回答了)。现在我明白了为什么它不好了。我将尝试定义NEQ=,NEQ看起来很有用。但我将只在本地执行,并将在共享代码时替换为标准。再次为我奇怪而疯狂的问题感到抱歉!尽管这仍然是可能的(人们可以想到编译之前运行
sed
命令),但这是一个非常糟糕的想法。这只是我想到的唯一解决办法。如果他真的需要它,这是一种方式。。。直到有人找到更好的解决方案。尽管这仍然是可能的(人们可以想到编译之前运行
sed
命令),但这是一个非常糟糕的想法。这只是我想到的唯一解决办法。如果他真的需要它,这是一种方式。。。直到有人找到更好的解决方案。