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 ",test0); 31 return 0; 32 }