1. 程式人生 > >編寫一個程式區分是C原始碼還是C++原始碼

編寫一個程式區分是C原始碼還是C++原始碼

C++是在C語言的基礎上建立的,所以在C++程式中沿用了很多C語言的東西,如printf函式既可以在C程式中使用,也可以在C++程式中使用,只需要引入相關的庫檔案即可。

如何區分是.c檔案還是.cpp檔案?

test.cpp
#include<cstdio>
int main(void){
	printf("hello world");
	return 0;
}

test.c
#include<stdio.h>
int main(void){
	printf("hello world");
	return 0;
}

上邊test.c和test.cpp原始檔如果使用g++進行編譯,g++會把.c檔案當作.cpp檔案進行處理,這樣是區分不出來的。實際上C++編譯器在編譯C++程式中會向檔案中新增__cpluscplus巨集

,我們可以利用這個巨集來區分當前原始檔是C++程式還是C程式。

#include<stdio.h>
int main(void){
#ifdef __cpluscplus
	printf("c++\n");
#else
	printf("c\n");
#endif
	return 0;
}

此外,實際上我們在看C庫的一些原始碼時,也會如上邊的巨集定義,因為C庫函式完可能被C++程式使用,但是兩者生成符號的規則卻完全不相同。為了使得生成符號一致,需要加入extern “C”{}。
來自cstdio的一段原始碼就是用到了__cplusplus巨集:
在這裡插入圖片描述