1 #include "stdio.h" 2 3 struct var_tab_item 4 { 5 const char* name; 6 const char* desc; 7 char type; 8 void* var; 9 }; 10 #define SECTION(name) __attribute__((section(name))) 11 #define EXPORT_VAR(name,desc,type) \ 12 const char __var_##name##_name[] = #name;\ 13 const char __var_##name##_desc[] = #desc;\ 14 const struct var_tab_item __var_##name SECTION("ExVar")=\ 15 {\ 16 __var_##name##_name,\ 17 __var_##name##_desc,\ 18 type,\ 19 (void*)&name\ 20 }; 21 #define DEFINE_INT32(name,desc) \ 22 long long name=0xabcd;\ 23 EXPORT_VAR(name,desc,'i') 24 25 DEFINE_INT32(test0,a test setting) 26 DEFINE_INT32(test1,cool tpdt) 27 28 int main() 29 { 30 printf("%lld\n",test0); 31 return 0; 32 }