,关于c的小疑点

求助,关于c的小问题
大家好!

#typedef int elem_type;

如果在c中定义上述代码,在使用printf输出elem_type类型的数据时,如何能自动根据elem_type的类型进行输出啊?
比如: 
elem_type是 int     那么 printf("%d",....)
elem_type是 char     那么 printf("%c",....)


------解决思路----------------------
用if + typeid判断进行输出
------解决思路----------------------
C语言中没有直接的办法,可以尝试:

if(sizeof(elem_type) == 1){
    printf("%c",....);
}
else{
    printf("%d",....);
}

------解决思路----------------------

    switch(sizeof(elem_type))
    {
        case sizeof(int):printf("int");break;
        case sizeof(char):printf("char");break;
        case sizeof(double):printf("double");break;
    }

------解决思路----------------------
引用:

    switch(sizeof(elem_type))
    {
        case sizeof(int):printf("int");break;
        case sizeof(char):printf("char");break;
        case sizeof(double):printf("double");break;
    }

如果是非内置类型,怎么办?
------解决思路----------------------
请牢记:源代码本身的书写是否结构化或面向对象或符合设计模式或敏捷…并不重要,重要的是你是否使用结构化或面向对象或符合设计模式或敏捷…的方法命名标识符、阅读、修改、检查、测试源代码。

意思是你程序结构看上去再合理,再简洁,也不一定比看上去一团乱麻的程序结构在运行或修改时更不易出错,更方便修改,出错了更容易找到哪里出错和具体出错的原因,更容易改正错误。

试对比
图书馆(对图书的分类够结构化了吧)

搜索引擎(可看作是扁平化任何结构数据,仅支持全文检索)
哪个处理信息更方便、更高效。

所以
与其费劲去重构代码让其看上去更简洁、更合理
不如费劲学习grep、sed、awk、……这类全文搜索和批处理编辑的工具。

结构越复杂,越难修改,越难除错。
有时(甚至大多数时候),看上去越合理、越简洁的代码,运行起来性能越差,出错时查找原因越难,找到出错原因后改正越费劲。

程序员要做的不是尽力避免错误,而是聚焦在快速发现并改正错误。真正以快速方式轻易解决错误,“快速的失败”远胜过“预防错误”。Fred George

------解决思路----------------------
#ifdef xxx
typedef int elem_type;
#define ELEM_FORMAT  "%d"
#else
typedef char elem_type;
#define ELEM_FORMAT  "%c"
#endif

....

printf("Some Worlds"  ELEM_FORMAT  "Other Worlds",  var_of_elem);

------解决思路----------------------
可以考虑使用sizeof进行判断。