template<typename Mutex>
class CMutexLock
{
public:
CMutexLock(Mutex& mutexIn, const char* pszName, const char* pszFile, int nLine, bool fTry = false) : lock(mutexIn, boost::defer_lock)
{
if (fTry)
TryEnter(pszName, pszFile, nLine);
else
Enter(pszName, pszFile, nLine);
}
};
typedef CMutexLock<CCriticalSection> CCriticalBlock;
#define LOCK(cs) CCriticalBlock criticalblock(cs, #cs, __FILE__, __LINE__)
我正在学习开源代码,想知道 # in#cs
是什么意思,如果可能的话,它在该代码中做了什么?它用于从 CMutexLock 模板#define LOCK(cs) CCriticalBlock criticalblock(cs, #cs, __FILE__, __LINE__)
定义LOCK(cs)
用于构造 CMutexLock 类,它在第二个参数上,CMutexClass 构造函数接收指向空终止字符串的指针
在#define
宏中,#
在符号之前意味着“字符串化”符号,这意味着处理它的符号被引用。
例如,给出这个宏:
#define STR(x) #x
像这样使用:
char *p = STR(hello);
被替换为:
char *p = "hello";
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句