c++ - #define ^ 在 C++ 中是不允许的

标签 c++ preprocessor

我无法使用 #define^ 赋予单独的含义,例如 #define ^ +。 但是我可以使用 #define 赋予 $ 意义,比如 #define $ +

您能告诉我$^ 有何不同吗?
根据 c++ 标准的哪条规则,不允许此 ^

我正在使用 VC++ 2012,未尝试使用 GCC 或任何其他工具。

最佳答案

^ 是 C++ 中的运算符。它是按位异或。请阅读https://www.tutorialspoint.com/cplusplus/cpp_operators.htm

运算符不能以这种方式“重新定义”,您需要重载它们。 C++允许在同一范围内为一个函数名或一个运算符指定多个定义,分别称为函数重载和运算符重载(https://www.tutorialspoint.com/cplusplus/cpp_overloading.htmhttps://en.wikibooks.org/wiki/C%2B%2B_Programming/Operators/Operator_Overloading#Bitwise_operators )

对于按位运算符,通常它们的优先级低于算术运算符,因此如果 ^ 被重载以求幂,x ^ y + z 可能无法按预期工作。

XOR 的规范形式是:Type operator^(const Type &lhs, const Type &rhs);//按位异或,而对于成员函数版本:Type &operator^=(const Type &rhs);//分配异或

引用:http://articles.emptycrate.com/2009/10/12/nobody_understands_c_part_8_operator_overloading.html

关于c++ - #define ^ 在 C++ 中是不允许的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42745725/

相关文章:

c++ - parallel_for ppl.h 不比顺序 C++ 快

c++ - 在 Visual C++ 中检查内存泄漏的正确方法

node.js - 通过快速中间件或构建系统进行预处理

xcode - 宏上的 LLVM 编译器的新build设置

c++ - 预处理器检查 constexpr const char* 函数

c - 在 c 中使用 #define 宏预处理器查找 min(a,b,c) 或 max(a,b,c)

c - C文件的部分预处理

c++ - 插入到 QTextEdit 中的 HTML 不符合样式表

C++ 模板。如何让这段代码更漂亮?

c++ - 单独的 QT 小部件实例