代碼中有一段宏定義如下:
#define CLASS_THREAD(c , x ) \
rp::hal::Thread::create_member<c, &c::x>(this )
小弟看了半天一直沒看懂是什么意思,這個替換語法還是第一次見,還請路過的高人給指點指點。。。。
uj5u.com熱心網友回復:
[color=#FF0000]詳細代碼是這樣的[/color]#pragma once
#include "rptypes.h"
#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;
};
}}
uj5u.com熱心網友回復:
VS IDE中,在不明白的符號上點滑鼠右鍵,選轉到定義。uj5u.com熱心網友回復:
【追問】“_cachethread = CLASS_THREAD(RPlidarDriverSerialImpl, _cacheCapsuledScanData);”,追溯到在thread.h頭檔案中,關于CLASS_THREAD的宏定義:“#define CLASS_THREAD(c , x ) \
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;實在不理解啊!
uj5u.com熱心網友回復:
VC編譯選項加/EP /P(專案、屬性、配置屬性、C/C++、前處理器、預處理到檔案:是,預處理取消顯示行號:是),重新編譯,查看宏展開后對應的.i檔案。gcc加-E http://bbs.csdn.net/topics/391003898轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/109611.html
標籤:基礎類
上一篇:windows列印超長 圖片
