我在尝试在代码中使用模板时面临以下问题
我有一些我用C函数调用的C ++代码。
问题是我在语句1和2的以下代码中得到了不同的值。
Type id : unsigned int
statement 1 : 4
statement 2 : 1
C ++代码:
template <typename T>
void func(T* value, unsigned int len = sizeof(T)) {
cout << "Type id : " << typeid(T).name() << endl;
cout << "statement 1 " << sizeof(T) << endl;
cout << "statement 2 " << len << endl;
}
template <typename T>
void func1(T data) {
T val = data;
func(&val);
}
void test(void *ptr, unsigned int len) {
switch(len) {
case 1:
func1(*(static_cast<uint32_t *>(ptr))
break;
}
}
这只发生在Windows上。在Linux上它工作正常。
答案 0 :(得分:1)
我得到4,4。您可能需要安装SP