C++使用編譯器VS2013,代碼如下:
-------------------------------------------------------------------------------- C++
typedef enum
{
a = 0,
b = 1,
} RegMode;
int setRegMode(RegMode mode)
{
return setProperty<RegMode>(1, mode);
}
template <class T>
int setProperty(int Id, const T& value)
{
// int setPropertyMode(int Id, const void* data, int dataSize)
return setPropertyMode(Id, &value, sizeof(T));
}
目前我更改的delphi代碼如下:
-------------------------------------------------------------------------------- delphi
RegMode = (a=0, b=1);
function setRegMode(Mode: RegMode): Integer;
begin
// function setPropertyMode(Id: Integer; const data: Pointer; dataSize: Integer): Integer;
Result := setPropertyMode(1, @mode, SizeOf(Mode));
end;
=====================================================
注:我跳過了setProperty函式,直接呼叫setPropertyMode,最后是失敗了,C++中setProperty的引數傳遞一頭霧水,求助!
uj5u.com熱心網友回復:
setProperty<RegMode>(1, mode);生成的特化函式是:
int setProperty(int Id, const RegMode& value)
{
return setPropertyMode(Id, &value, sizeof(RegMode));
}
從// int setPropertyMode(int Id, const void* data, int dataSize)來看,可能就是給value寫入一個值Id。
對Delphi來說,需要用{$Z4} 編譯開關來保證列舉常量為4位元組大小,和integer相同。
uj5u.com熱心網友回復:
關注..............轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/55111.html
標籤:語言基礎/算法/系統設計
上一篇:PHP中 進制轉換函式
下一篇:攝像頭 影像識別 影像分析演算法
