面试的时候的一道题

巴音木 2009-04-06 11:02:09
假如我不知道当前的编译器是什么编译器,如何别写一段代码识别出当前是C++还是C编译器?
感觉自己答的不是太好。


有知道的给解决一下啊,谢谢!!!!
...全文
150 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly_new 2009-04-22
  • 打赏
  • 举报
回复
办法太多了,常见的当然是__cplusplus。
其他的鬼办法N多。
比如,两全局变量
int a;
int a=10;
一般能过就是c,不能就是c++
jackzhhuang 2009-04-22
  • 打赏
  • 举报
回复
#ifdef __cplusplus     //若__cplusplus被定义
//__cplusplus被定义,所以此处是C++
#else
//__cplusplus没有被定义,所以此处是C
#endif
xiaoda123cs 2009-04-22
  • 打赏
  • 举报
回复
帮顶
bao001001 2009-04-06
  • 打赏
  • 举报
回复
keyword "class".
yangch_nhcmo 2009-04-06
  • 打赏
  • 举报
回复

#ifdef __cplusplus
cout << "This is C++ complier!" << endl;
#else
printf("this is C complier!\n");
#endif
十八道胡同 2009-04-06
  • 打赏
  • 举报
回复
学习
wudeshou82666 2009-04-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bitxinhai 的回复:]
#ifdef __cplusplus//c++编译器都会有这个定义的
cout < <"c++ complier!!" < <endl;
#endif
[/Quote]
赞同
  • 打赏
  • 举报
回复
#ifdef __cplusplus
来判断C++,还可以extern C来保持移植性
wuyu637 2009-04-06
  • 打赏
  • 举报
回复
编译C++程序的时候,编译器自动定义了一个预处理器的名字__cplusplus,以次来判断程序是否为C++程序。编译C程序的时候,编译器自动定义__STDC__,这两个预处理器常量不会同时被定义。
bitxinhai 2009-04-06
  • 打赏
  • 举报
回复
#ifdef __cplusplus//c++编译器都会有这个定义的
cout<<"c++ complier!!"<<endl;
#endif
morris88 2009-04-06
  • 打赏
  • 举报
回复
用cin/cout,能编译通过的就是c++,否则就是c
jieao111 2009-04-06
  • 打赏
  • 举报
回复
写c++有的特性而c没有的特性的代码,比如重载,引用,模板一类的

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧