我想扩展std :: string并添加“equals”。 所以我做了以下事情:
#define Equals(str1) compare(str1) == 0
并使用以下代码:
if ( str.Equals("hhhhllll") )
其中(我假设)编译为
if ( str.compare("hhhhllll") == 0 )
一切都很好。
现在我想改进我的宏,添加括号以编译为
if ( (str.compare("hhhhllll") == 0) )
我尝试过类似的事情:
#define (str).Equals(str1) (str.compare(str1) == 0)
但它不会编译(宏根本不适合)
我怎样才能实现它?
答案 0 :(得分:2)
你的宏:
#define (str).Equals(str1) (str.compare(str1) == 0)
不适合,因为它不符合宏定义。你可以这样写:
#define Equals(str, str1) (str.compare(str1) == 0)
但没有必要。可以将所有std::string
个实例与重载的operatror==
进行比较
这样您就可以编写以下代码:
if (str == str1)
在C ++中使用宏定义是非常不推荐的。