2021-09-22 18:39:02 +00:00
|
|
|
#include <stdio.h>
|
|
|
|
|
|
2021-09-23 13:29:52 +00:00
|
|
|
int add_numbers(int a, int b) {
|
|
|
|
|
return a + b;
|
|
|
|
|
}
|
|
|
|
|
|
2021-09-22 18:39:02 +00:00
|
|
|
typedef struct point {
|
|
|
|
|
float x;
|
|
|
|
|
float y;
|
|
|
|
|
} Point;
|
|
|
|
|
|
|
|
|
|
Point add_points(Point a, Point b) {
|
|
|
|
|
Point res = {};
|
|
|
|
|
|
|
|
|
|
res.x = a.x + b.x;
|
|
|
|
|
res.y = a.y + b.y;
|
|
|
|
|
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
typedef char *CString;
|
|
|
|
|
|
|
|
|
|
typedef CString (*StringFactory)(void);
|
|
|
|
|
|
2021-09-23 13:29:52 +00:00
|
|
|
CString upcall_test(StringFactory fun) {
|
2021-09-22 18:39:02 +00:00
|
|
|
return fun();
|
|
|
|
|
}
|
|
|
|
|
|
2022-11-29 19:43:06 +00:00
|
|
|
int counter = 0;
|
2021-09-22 18:39:02 +00:00
|
|
|
|
|
|
|
|
static char* responses[] = { "Hello, world!", "Goodbye friend.", "co'oi prenu" };
|
|
|
|
|
|
|
|
|
|
CString get_string1(void) {
|
|
|
|
|
return responses[counter++ % 3];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CString get_string2(void) {
|
|
|
|
|
return "Alternate string";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
StringFactory get_downcall(int whichString) {
|
|
|
|
|
switch (whichString % 2) {
|
|
|
|
|
case 0:
|
|
|
|
|
return get_string1;
|
|
|
|
|
case 1:
|
|
|
|
|
return get_string2;
|
|
|
|
|
default:
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-01-10 20:37:56 +00:00
|
|
|
|
|
|
|
|
typedef struct alignment_test {
|
|
|
|
|
char a;
|
|
|
|
|
double x;
|
|
|
|
|
float y;
|
|
|
|
|
} AlignmentTest;
|
|
|
|
|
|
|
|
|
|
AlignmentTest get_struct() {
|
|
|
|
|
AlignmentTest ret = {};
|
|
|
|
|
ret.a = 'x';
|
|
|
|
|
ret.x = 3.14;
|
|
|
|
|
ret.y = 42.0;
|
|
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
|
}
|