/icecream-c

Never use printf to debug again in c99

Primary LanguageCMIT LicenseMIT

IceCream-C

Never use printf to debug again

Single header, implemented in C99 of IceCraem.

Based on rxi's log.c

use

import:

#include "icecream.h"

The exmple when there are no parameters

ic();

output

🍦 test/test.c:24 in main()

The example of printing string

char str_a[] = "hello";
char str_b[] = "world";

ic_str(str_a, str_b, "!");

output

🍦 str_a = "hello", str_b = "world", "!" = "!"

The example of printing int

int int_a = 32767;
int int_b = -32768;

ic_int(int_a, int_b, 999);

output

🍦 int_a = 32767, int_b = -32768, 999 = 999

The example of printing long

long long_a = 2141483647;
long long_b = -2147483648;

ic_long(long_a, long_b, 999999);

output

🍦 long_a = 2141483647, long_b = -2147483648, 999999 = 999999

The example of printing hex

int int_a = 32767;
int int_b = -32768;

ic_hex(int_a, int_b, 999);

output

🍦 int_a = 0x7fff, int_b = 0xffff8000, 999 = 0x3e7

The example of printing float

float float_a = 1.0;
float float_b = 2.0;

ic_float(float_a, float_b, 999.0);

output

🍦 float_a = 1.00, float_b = 2.00, 999.0 = 999.00

The example of printing double

double double_a = 1.0;
double double_b = 2.0;

ic_double(double_a, double_b, 999.0);

output

🍦 double_a = 1.0000, double_b = 2.0000, 999.0 = 999.0000

The example of printing pointer

char str_a[] = "hello";
char str_b[] = "world";
char *ptr_a = &str_a[0];
char *ptr_b = &str_b[0];

ic_ptr(ptr_a, ptr_b, "!");

output

🍦 ptr_a = 0x7ffee2bcf378, ptr_b = 0x7ffee2bcf380, "!" = 0x10d031e3e

License

This library is free software; you can redistribute it and/or modify it under the terms of the MIT license. See LICENSE for details.