summaryrefslogtreecommitdiffstats
path: root/tests/run-make/extern-fn-with-packed-struct/test.c
blob: c89f8272b1e8376a4a5b29440bf48c94dd8f3ee3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// Pragma needed cause of gcc bug on windows: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52991

#include <assert.h>

#ifdef _MSC_VER
#pragma pack(push,1)
struct Foo {
    char a;
    short b;
    char c;
};
#else
#pragma pack(1)
struct __attribute__((packed)) Foo {
    char a;
    short b;
    char c;
};
#endif

struct Foo foo(struct Foo foo) {
    assert(foo.a == 1);
    assert(foo.b == 2);
    assert(foo.c == 3);
    return foo;
}