Я знаю, что тип, основанный на объединении, наказание нелегально в C ++, поэтому я хотел убедиться, что мое использование безопасно: < /p>
Код: Выделить всё
// sum_halves.h
#include
uint32_t sum_halves(unit64_t i);
< /code>
// sum_halves.c
#include "sum_halves.h"
uint32_t sum_halves(unit64_t i) {
union {
uint64_t u64;
uint32_t u32[2];
} u;
u.u64 = i;
return u.u32[0] + u.u32[1];
}
< /code>
// sum_halves_test.cpp
#include "sum_halves.h"
#include
TEST(sum_halves_test, two_plus_two_is_five) {
EXPECT_EQ(sum_halves(0x0000'0002'0000'0003), 5);
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... d-c-c-code
Мобильная версия