怎样判断一段程序是由C编译程序还是由C++编译程序编译的
发布网友
发布时间:2024-10-22 02:14
我来回答
共2个回答
热心网友
时间:2024-11-09 15:54
简单的说,由于C语言是没有重载函数的概念的,所以C编译器编译的程序里,所有函数只有函数名对应的入口。而由于C++语言有重载函数的概念,如果只有函数名对应入口,则会出线混淆。所以C++编译器编译的程序,应该是函数名+参数类型列表对应到入口。
注意,因为main函数是整个程序的入口,所以main是不能重载的,所以,如果一个程序只有main函数,是无法确认是C还是C++编译器编译的。
可以通过nm来查看函数名入口。
如一个函数
int foo(int i,float j)
C编译的程序通过nm查看
f 0x567xxxxxx (地址)
C++编译程序,通过nm
f(int,float) 0x567xxxxxx
参考资料:http://www.yuanma.org/blog/blog.php?do-showone-tid-88.html
热心网友
时间:2024-11-09 15:54
#ifdef _cplusplus /*判断是否用C++编译器?*/
#define USING_C 0 /*是用C编译器*/
#else
#define USING_C 1 /*是用C++编译器*/
#endif
#include<stdio.h>
main()
{
if(USING_C) printf("C++\n");
else printf("C\n");
}