online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
#include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <math.h> #include <inttypes.h> #define DMP_LLEN 4 #define KNRM "\x1B[0m" #define KRED "\x1B[31m" #define KGRN "\x1B[32m" #define KYEL "\x1B[33m" #define KBLU "\x1B[34m" #define KMAG "\x1B[35m" #define KCYN "\x1B[36m" #define KWHT "\x1B[37m" struct inner { int a; }; typedef struct test_unpacked_s { char a; struct inner b; } test_unpacked_t; typedef struct test_packed_s { char a; struct inner b; } __attribute__((__packed__)) test_packed_t; void hexdump(void *ptr, double len) { int i, j; char *pivot = ptr; for (i = 0; i < ceil(len / DMP_LLEN); i++) { printf(" |"KRED" %p "KNRM"| [ ", pivot); for (j = 0; j < DMP_LLEN; j++) { printf(KGRN"%02x "KNRM, *pivot++); } pivot = pivot - DMP_LLEN; printf("] --> "); for (j = 0; j < DMP_LLEN; j++) { printf(KYEL"[%c]"KNRM, (*pivot == 0x00 ? ' ' : *pivot)); pivot++; } printf(" |\n"); } } int main(int argc, char *argv[]) { test_unpacked_t unpacked; test_packed_t packed; memset(&unpacked, 0, sizeof(unpacked)); memset(&packed, 0, sizeof(packed)); unpacked.a = 48; unpacked.b.a = 'X'; packed.a = 48; packed.b.a = 'X'; printf(" +====================+\n"); printf(" | "KMAG"size unpacked: "KNRM" %lu |\n", sizeof(unpacked)); printf(" | "KMAG"size packed: "KNRM" %lu |\n", sizeof(packed)); printf(" +====================+\n"); printf("\n +====================================+\n"); printf(" | unpacked : %p |\n", &unpacked); printf(" +====================================+\n"); printf(" | unpacked a : %p |\n", &unpacked.a); printf(" | unpacked b : %p |\n", &unpacked.b); printf(" | unpacked b.a : %p |\n", &unpacked.b.a); printf(" +=====================================\n"); printf("\n +====================================+\n"); printf(" | packed \t: %p |\n", &packed); printf(" +====================================+\n"); printf(" | packed a \t: %p |\n", &packed.a); printf(" | packed b \t: %p |\n", &packed.b); printf(" | packed b.a \t: %p |\n", &packed.b.a); printf(" =====================================+\n"); printf("\n +===================================================+\n"); printf(KCYN" | hexdump unpacked (%lu bytes):"KNRM" |\n", sizeof(unpacked)); printf(" +===================================================+\n"); hexdump(&unpacked, sizeof(unpacked)); printf(" +===================================================\n"); printf("\n +===================================================+\n"); printf(KCYN" | hexdump packed (%lu bytes):"KNRM" |\n", sizeof(packed)); printf(" +===================================================+\n"); hexdump(&packed, sizeof(packed)); printf(" +===================================================+\n"); return 0; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue