#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static int number = 42;
static long big_number = 2147483648L;
static float ratio = 3.14f;
static double pi = 3.141592653589793;
static char letter = 'X';
static int flag = 1;
static const char *greeting = "Hello, DAP!";
static char buffer[64] = "initialized buffer with trailing garbage";
static int items[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 15, 20};
static size_t item_count = sizeof(items) / sizeof(items[0]);
static double coords[] = {1.1, 2.2, 3.3, 4.4, 5.5};
static size_t coord_count = sizeof(coords) / sizeof(coords[0]);
typedef enum {
ERR_NONE = 0,
ERR_TIMEOUT,
ERR_DISCONNECTED,
ERR_INVALID,
} error_kind;
typedef union {
long numeric;
char message[64];
} payload;
typedef struct {
int value;
double threshold;
const char *label;
} Counter;
typedef struct {
const char *name;
int major;
int minor;
int patch;
int connected;
} AdapterInfo;
typedef struct {
Counter counter;
AdapterInfo adapter;
int port;
error_kind last_error;
payload last_payload;
} Connection;
long factorial(long n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
void process_items(const int *src, size_t count, int *dst) {
for (size_t i = 0; i < count; i++) {
int doubled = src[i] * 2;
dst[i] = doubled;
}
}
int inner(int x) {
int square = x * x;
return square;
}
int middle(int x) {
int y = x + 3;
int z = inner(y);
return z + 1;
}
int outer(void) {
int result = middle(5);
return result * 2;
}
static volatile int heartbeat = 0;
int main(void) {
int doubled[20] = {0};
volatile int local_volatile = 99;
Counter c = {.value = 10, .threshold = 0.5, .label = "main-counter"};
AdapterInfo info = {
.name = "debugpy",
.major = 1,
.minor = 8,
.patch = 13,
.connected = 1,
};
Connection conn = {
.counter = c,
.adapter = info,
.port = 5678,
.last_error = ERR_TIMEOUT,
.last_payload.message = "connection attempt timed out after 30 seconds",
};
heartbeat = 1;
int *heap_number = malloc(sizeof(int));
if (heap_number) *heap_number = 999;
int *heap_array = malloc(sizeof(int) * 4);
if (heap_array) {
heap_array[0] = 10;
heap_array[1] = 20;
heap_array[2] = 30;
heap_array[3] = 40;
}
printf("number = %d\n", number);
printf("pi = %.15f\n", pi);
printf("text = %s\n", greeting);
printf("flag = %d\n", flag);
printf("info = %s v%d.%d.%d\n", info.name, info.major, info.minor, info.patch);
printf("conn.port = %d\n", conn.port);
process_items(items, item_count, doubled);
printf("doubled[0] = %d, doubled[last] = %d\n",
doubled[0], doubled[item_count - 1]);
long fact = factorial(5);
printf("factorial(5) = %ld\n", fact);
c.value += 1;
c.value += 1;
printf("counter.value = %d\n", c.value);
int outer_result = outer();
printf("outer_result = %d\n", outer_result);
int x = 10;
int y = 20;
int z = x + y;
printf("z = %d\n", z);
free(heap_number);
free(heap_array);
return 0;
}