我正在使用执行类似操作的代码:
#include <cstdint>
#include <iostream>
static constexpr int TOOL_COUNT = 3;
struct Parameters {
std::uint16_t version;
std::uint16_t delay;
std::uint16_t minimumTemperatures[TOOL_COUNT];
std::uint16_t maximumTemperatures[TOOL_COUNT];
};
void useAsPointerToUint16(const std::uint16_t* data,const std::size_t size) {
std::cout << size << std::endl;
for (unsigned int i = 0; i < size; ++i) {
std::cout << *data;
++data;
}
std::cout << std::endl;
}
int main() {
Parameters parameters{1,2,{3,4,5},{6,7,8}};
useAsPointerToUint16(reinterpret_cast<std::uint16_t*>(¶meters),sizeof(parameters) / sizeof(std::uint16_t));
}
对我而言, useAsPointerToUint16 中的取消引用是未定义的行为。
我对吗?