wnlt.net
当前位置:首页 >> 如何判断一段程序是由C 编译程序还是由C++编译 程序编译的 >>

如何判断一段程序是由C 编译程序还是由C++编译 程序编译的

简单的说,由于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

ANSIC标准中有一个__cplusplus标识符,当你编译C++程序时,这个标识符就会被定义;当你编译C程序时,这个标识符不会被定义.这样,你就可以检查程序是不是用C++编译程序编译的,请看下例: #ifdef __cplusplus /* Is __cplusplus

以下是在论坛中看到的两种解释:(1)如果是要你的代码在编译时发现编译器类型,就判断_cplusplus或_STDC_宏,通常许多编译器还有其他编译标志宏,#ifdef __cpluspluscout<<"c++";#elsecout<<"c";#endif如果要判断已经编译的代码

c++的程序,一般包含这句声明:using namespace std;c++的主程序入口为:int main(int argc, char *argv[])而c语言的程序入门为: int main(void)

C编译时定义了_cplusplus,C++编译时定义了_STDC_#ifdef _cplusplus /*判断是否用C++编译器?*/ #define USING_C 0 /*是用C编译器*/ #else #define USING_C 1 /*是用C++编译器*/ #endif #include int main() { if(USING_C) printf("C++\n"); else

dev c++可以编译c语言 及c++程序功能比tc强大许多只要您熟悉了其中的操作就会对它爱不释手那蓝色的tc屏幕您就永远都不高兴再碰了

如果是用C++编译程序的话系统会自定义一个宏__cplusplus你可以自己写个小程序实验一下#include<iostream>int main( ){#ifdef __cplusplus std::cout << "C++" << std::endl;#endif return 0;}

如果编译器在编译cpp文件,那么 _cplusplus就会被定义,如果是一个C文件被编译,那么 _STDC_就会被定义,_STDC_是预定义宏,当它被定义后,编译器将按照ANSIC标准来编译C语言程序. 所以,可以采用下列程序示例判断:#include<stdio.h>#ifdef _cplusplus#define USING_C 0#else#define USING_C 1#endif#include<stdio.h>int main(){ if(USING_C) printf("C\n"); else printf("C++\n"); return 0;}

一般情况来说,C语言代码是可以用C++编译器编译的,但是C编译器,就一般不能编译C++代码.自己区分的话:1、包含头文件格式:#include和有using namespace的,都应该属于C++的内容.而#include也应该是C++,因为它属于C++的库,由于C++代码可以应用C语言的函数库,所以比较难区分.比如#include的,不一定就是C语言代码

用判断宏的方式.大多数编译器在编译时如果是c++的程序都会定义一个叫_cplusplus的宏.因此可以用这段代码来判断

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.wnlt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com