0

I am working with a code that does something like that:

#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*>(&parameters), sizeof(parameters) / sizeof(std::uint16_t));
}

For me the dereferencing in useAsPointerToUint16 is undefined behavior.

Am I right?

Nicolas
  • 598
  • 3
  • 15

0 Answers0