默认参数值错误 [Visual C++ 2008 中的错误?

Error in value of default parameter [Bug in Visual C++ 2008?]

本文关键字:错误 2008 C++ Visual 参数 默认      更新时间:2023-10-16

我在尝试在代码中使用模板时遇到以下问题

我有一些从 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;
   }
}

这只发生在窗口上。在Linux上,它工作正常。

我得到 4,4。您可能需要安装 SP