我可以假設,從調用堆棧點來看,它調用像功能1結構與功能參數
int function1(T1 t1, T2 t2);
的功能,而不是另一個類似功能2一樣的嗎?
struct parameters_t
{
Wide<T1>::type t1;
Wide<T2>::type t2;
}
int function2(parameters_t p);
凡寬模板寬Ť到所述處理器的字長。 例如,對於32位處理器:
template<typename T, bool b = sizeof(T) >=4 >
struct Wide
{
typedef T type;
};
template<typename T>
struct Wide<T,false>
{
typedef unsigned int type;
};
我需要做這樣的事情:
typedef int (*function_t)(parameters_t);
function_t function = (function_t) &function1;
parameters_t params;
// initialize params
function(params);
謝謝!
你當然是正確的,並且正在說我是同一件事,但如果你打算使用這個方法並將該向量放入一個args類或結構體中,然後再進一步模板化,我會更進一步稍後您可以添加更多不同類型的參數,而無需對API進行任何更改。 – 2010-02-17 00:52:05
@San Jacint:哦,是的,這個主題肯定有不少變化。底線是弄清楚你真正需要什麼,然後做(直接)。如果你對編譯器說謊,它會得到它的報復,並且試圖將單個參數傳遞給定義了一個結構的東西(反之亦然)直接落入該類別中。 – 2010-02-17 03:09:48
好的。它的工作原理是因爲我使用了gcc,它將參數從右到左推進,但確實在不同平臺之間的註冊使用情況存在差異。 我不希望編譯器稍後對我進行報復:) 謝謝你們兩位! – 2010-02-17 10:13:13