代码中有一段宏定义如下:#define CLASS_THREAD(c , x ) \
rp::hal::Thread::create_member<c, &c::x>(this )小弟看了半天一直没看懂是什么意思,这个替换语法还是第一次见,还请路过的高人给指点指点。
rp::hal::Thread::create_member<c, &c::x>(this )小弟看了半天一直没看懂是什么意思,这个替换语法还是第一次见,还请路过的高人给指点指点。
解决方案 »
- vs2012提示未能返回新代码元素.可能是语法错误
- 在线等!急!哪位能教我Crypto++中RSA的基本用法啊?拜谢!就是如何加密二进制数据.
- 怎样向CRichEditCtrl插入gif和ico文件?
- 求助:dll中通过ClassWizard添加一个CComboBox型的变量后出错
- BitBlt贴过去的图片,为什么一刷新就没了?
- 怎样向函数传递一个数组?
- 怎样写一个License的控制插件?主要思路是什么呀?请大家指教!
- 散分题。。
- 关于线程工作的问题?
- 谁有局域网语音通讯的源代码?
- 基于对话框程序,想把ok按钮和右上角关闭的叉做成一个函数
- vs2012开发的读写智能设备程序,在其他PC机上读写不了。
#define CLASS_THREAD(c , x ) \
rp::hal::Thread::create_member<c, &c::x>(this )namespace rp{ namespace hal{class Thread
{
public:
enum priority_val_t
{
PRIORITY_REALTIME = 0,
PRIORITY_HIGH = 1,
PRIORITY_NORMAL = 2,
PRIORITY_LOW = 3,
PRIORITY_IDLE = 4,
}; template <class T, u_result (T::*PROC)(void)>
static Thread create_member(T * pthis)
{
return create(_thread_thunk<T,PROC>, pthis);
} template <class T, u_result (T::*PROC)(void) >
static _word_size_t THREAD_PROC _thread_thunk(void * data)
{
return (static_cast<T *>(data)->*PROC)();
}
static Thread create(thread_proc_t proc, void * data = NULL );public:
~Thread() { }
Thread(): _data(NULL),_func(NULL),_handle(0) {}
_word_size_t getHandle(){ return _handle;}
u_result terminate();
void *getData() { return _data;}
u_result join(unsigned long timeout = -1);
u_result setPriority( priority_val_t p);
priority_val_t getPriority(); bool operator== ( const Thread & right) { return this->_handle == right._handle; }
protected:
Thread( thread_proc_t proc, void * data ): _data(data),_func(proc), _handle(0) {}
void * _data;
thread_proc_t _func;
_word_size_t _handle;
};}}
rp::hal::Thread::create_member<c, &c::x>(this )”,将之替换,发现_cachethread等号右边语句似乎不符合语法规范,不知是否我方的替换过程有错。请问此替换过程是否有误?
_cachethread = rp::hal::Thread::create_member<RPlidarDriverSerialImpl,&RPlidarDriverSerialImpl::_cacheCapsuledScanData>(this);编译后报错结果是INTERNAL COMPILER ERROR,编译内部错误。请问赋值语句等号右侧出现逗号断句,结尾分号,这种结构可以通过编译吗?A=B<b,C>c;实在不理解啊!