【测试】字节对齐

xiaoxiao2021-02-28  102

#include <cassert> #include <iostream> #define test_bool #ifdef test_integer #define type_t int #elif defined(test_double) #define type_t double #elif defined(test_pointer) #define type_t char * #elif defined(test_bool) #define type_t bool #else #error "must define test type!!!" #endif // test_integer struct test_t { char a; type_t b; bool c; char d[10]; }; struct align_x86_t { char a; char aa[3]; type_t b; bool c; char d[10]; char dd[1]; }; struct align_x64_t { char a; char aa[7]; type_t b; bool c; char d[10]; char dd[4]; }; struct element_t { type_t b; }; struct max_int_t { char a; int b; bool c; }; struct max_double_t { char a; double b; bool c; }; int main() { std::cout << sizeof(test_t) << std::endl; std::cout << sizeof(align_x86_t) << std::endl; std::cout << sizeof(align_x64_t) << std::endl; #ifdef test_integer assert(sizeof(test_t) == sizeof(align_x86_t)); #elif defined(test_double) assert(sizeof(test_t) == sizeof(align_x64_t)); #endif // test_integer std::cout << sizeof(element_t) << std::endl; std::cout << sizeof(max_int_t) << std::endl; std::cout << sizeof(max_double_t) << std::endl; return(0); }

转载请注明原文地址: https://www.6miu.com/read-50641.html

最新回复(0)