1 // Copyright 2020 Peter Dimov
2 // Distributed under the Boost Software License, Version 1.0.
3 // https://www.boost.org/LICENSE_1_0.txt
4 
5 #if !defined(__GNUC__)
6 
7 #include <boost/config/pragma_message.hpp>
8 BOOST_PRAGMA_MESSAGE( "Skipping test because __GNUC__ is not defined" )
main()9 int main() {}
10 
11 #else
12 
13 #define BOOST_ENDIAN_FORCE_PODNESS
14 #define BOOST_ENDIAN_NO_CTORS
15 #include <boost/endian/buffers.hpp>
16 #include <boost/core/lightweight_test.hpp>
17 
18 using namespace boost::endian;
19 
20 struct X
21 {
22     big_uint16_buf_t a;
23     native_float64_buf_t b;
24     little_uint16_buf_t c;
25 } __attribute__((packed));
26 
main()27 int main()
28 {
29     BOOST_TEST_EQ( sizeof(big_uint16_buf_t), 2 );
30     BOOST_TEST_EQ( sizeof(native_float64_buf_t), 8 );
31     BOOST_TEST_EQ( sizeof(little_uint16_buf_t), 2 );
32 
33     BOOST_TEST_EQ( sizeof(X), 12 );
34 
35     return boost::report_errors();
36 }
37 
38 #endif
39