Last active
October 12, 2015 08:57
-
-
Save Taehun/4002388 to your computer and use it in GitHub Desktop.
Define #define constant for compile time in gcc
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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