Viewing file: cabi2.cpp (4.07 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#include <assert.h> #include <stdio.h> #include <stdint.h>
#if __cplusplus extern "C" { #endif
struct Foo1 { char c; };
struct Foo1 ctest1() { struct Foo1 f;
f.c = 3; return f; }
struct Foo2 { short s; };
struct Foo2 ctest2() { struct Foo2 f;
f.s = 0x1234; return f; }
struct Foo3 { char c; short s; };
struct Foo3 ctest3() { struct Foo3 f;
f.s = 0x5678; return f; }
struct Foo4 { int i; };
struct Foo4 ctest4() { struct Foo4 f;
f.i = 0x12345678; return f; }
struct Foo5 { int i, j; };
struct Foo5 ctest5() { struct Foo5 f;
f.i = 0x12345678; f.j = 0x21436587; return f; }
struct Foo6 { int i, j, k; };
struct Foo6 ctest6() { struct Foo6 f;
f.i = 0x12345678; f.j = 0x21463587; f.k = 0x24163857; return f; }
struct S7 { float a,b; };
struct S7 ctest10() { struct S7 f;
f.a = 2.5; f.b = 1.5; return f; }
// =================================
char ctest7(char c) { return c + 1; }
unsigned char ctest8(unsigned char c) { return c + 1; }
signed char ctest9(signed char c) { return c + 1; }
/***********************************************/
void ctestrir(int x1, int x2, int x3, int x4, int x5, int x6, long double a, int b, long double c) { assert(a == 100.0); assert(b == 67); assert(c == 200.0); }
/***********************************************/
extern void dtestrir(int x1, int x2, int x3, int x4, int x5, int x6, long double a, int b, long double c);
void test4() { dtestrir(1,2,3,4,5,6, 300.0, 68, 401.0); }
/**********************************************/
typedef struct S11 { char a; char b; char c; } S11;
S11 ctest11(char x, S11 s, char y) { printf("C sz = %d\n", (int)sizeof(S11)); assert(sizeof(S11) == 3); printf("x = %d\n", (int)x); printf("s.a = %d\n", (int)s.a); printf("s.b = %d\n", (int)s.b); printf("s.c = %d\n", (int)s.c); printf("y = %d\n", (int)y); return s; }
/**********************************************/
typedef struct S12 { char a,d; char b,e; char c; } S12;
S12 ctest12(char x, S12 s, char y) { printf("C sz = %d\n", (int)sizeof(S12)); assert(sizeof(S12) == 5); printf("x = %d\n", (int)x); printf("s.a = %d\n", (int)s.a); printf("s.b = %d\n", (int)s.b); printf("s.c = %d\n", (int)s.c); printf("y = %d\n", (int)y); return s; }
/**********************************************/
typedef struct S13 { short a; short b; short c; } S13;
S13 ctest13(char x, S13 s, char y) { printf("C sz = %d\n", (int)sizeof(S13)); assert(sizeof(S13) == 6); printf("x = %d\n", (int)x); printf("s.a = %d\n", (int)s.a); printf("s.b = %d\n", (int)s.b); printf("s.c = %d\n", (int)s.c); printf("y = %d\n", (int)y); return s; }
/**********************************************/
typedef struct S14 { char a,d,e,f; char b,g; char c; } S14;
S14 ctest14(char x, S14 s, char y) { printf("C sz = %d\n", (int)sizeof(S14)); assert(sizeof(S14) == 7); printf("x = %d\n", (int)x); printf("s.a = %d\n", (int)s.a); printf("s.b = %d\n", (int)s.b); printf("s.c = %d\n", (int)s.c); printf("y = %d\n", (int)y); return s; }
/**********************************************/
typedef struct S15 { char a,d,e,f; char b,g,h,i; char c; } S15;
S15 ctest15(char x, S15 s, char y) { printf("C sz = %d\n", (int)sizeof(S15)); assert(sizeof(S15) == 9); printf("x = %d\n", (int)x); printf("s.a = %d\n", (int)s.a); printf("s.b = %d\n", (int)s.b); printf("s.c = %d\n", (int)s.c); printf("y = %d\n", (int)y); return s; }
/**********************************************/
typedef struct S16 { char a[5]; #ifdef __GNUC__ struct __attribute__((packed)) #else #pragma pack(push, 1) struct #endif { char b; int c; }; #ifndef __GNUC__ #pragma pack(pop) #endif } S16;
S16 ctest16(char x, S16 s, char y) { printf("C sz = %d\n", (int)sizeof(S16)); assert(sizeof(S16) == 10); printf("x = %d\n", (int)x); printf("s.a = %.*s\n", 5, s.a); printf("s.b = %d\n", (int)s.b); printf("s.c = %d\n", s.c); printf("y = %d\n", (int)y); return s; }
#if __cplusplus } #endif
|