Skip to content

Instantly share code, notes, and snippets.

@Taehun
Last active October 12, 2015 08:57
Show Gist options
  • Save Taehun/4002388 to your computer and use it in GitHub Desktop.
Save Taehun/4002388 to your computer and use it in GitHub Desktop.
Define #define constant for compile time in gcc
#include <stdio.h>
#define _2_0 (1)
#define _2_1 (_2_0*2)
#define _2_2 (_2_1*2)
#define _2_3 (_2_2*2)
#define _2_4 (_2_3*2)
#define _2_5 (_2_4*2)
#define _2_6 (_2_5*2)
#define _2_7 (_2_6*2)
#define _2_8 (_2_7*2)
#define TWO_ORDER(n) _2_##n
#define MAX_VAL 40
#if TWO_ORDER(1) > MAX_VAL
#define ORDER (0)
#elif TWO_ORDER(2) > MAX_VAL
#define ORDER (1)
#elif TWO_ORDER(3) > MAX_VAL
#define ORDER (2)
#elif TWO_ORDER(4) > MAX_VAL
#define ORDER (3)
#elif TWO_ORDER(5) > MAX_VAL
#define ORDER (4)
#elif TWO_ORDER(6) > MAX_VAL
#define ORDER (5)
#elif TWO_ORDER(7) > MAX_VAL
#define ORDER (6)
#elif TWO_ORDER(8) > MAX_VAL
#define ORDER (7)
#else
#error "Can not support value."
#endif
int main(void)
{
printf("2' order value = %d\n", ORDER);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment