"#define clear()"和"std::wstring::clear()"之间的混淆
Confusion between "#define clear()" and "std::wstring::clear()"
我包含了"PDCurse/curses.h",它定义了一个函数"clear()",然后当我使用"std::wstring::clear(()"时,msvc-10.0编译器会报告错误。当我在include之后'#undefclear()'时,它被修复了。代码如下:
inline void str_clear( std::wstring& wstr )
{
wstr.clear();
}
我使用了"std::",但为什么编译器仍然令人困惑?它可能是由多重定义的"namespace"引起的吗?
原因是预处理器基本上对所有定义的宏进行搜索和替换。它是在编译器获得代码之前完成的,而且它对命名空间、类或范围一无所知。
因此,如果你有例如
#define clear() something
然后使用
wstr.clear();
预处理器将替换clear()
,以便编译器看到
wstr.something;
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 大小相等但成员数量不同的结构之间的性能差异
- 类与私有变量的其他类之间的线程安全性
- 如何在cpp文件之间切换窗口?在Qt中
- 线程之间的布尔停止信号
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 在 const 函数中通过引用和指针返回之间的区别
- C++向量:clear() 和 resize() 之间的区别
- str.clear() 和 str 之间的区别 = " "
- 是cin.clear()和cin.ignore()之间必需的序列
- c++ 中向量的 clear() 和 erase() 方法之间的区别
- "#define clear()"和"std::wstring::clear()"之间的混淆
- Qt5中的void QSqlQuery::clear()和void QSqlQuery::finish()之间有什么区别