#预处理器指示符

#include<file>
#include"file"
    区别在于: 前者是先寻找 Include Path的路径,接着是source路径,最后是文件所在位置路径。后者先访问文件所在位置路径,Include Path的路径,最后是source路径。
    对于标准c语言,会预定义_STDC_,对于C++,则会预定义_cplusplus,可以据此判断文件是标准c还是c++。经常用到的是_cplusplus结合extern "c"来进行c语言和c++的混用。
    对于c++文件调用c,通常是将c语言的实现或者声明放在extern "c"中,告诉编译器以c语言的规则来编译和链接所用的c语言部分。不然则会在链接时刻出现错误。
a.c文件
#include"a.h"
int plus(int a, int b){
    return a+b;
}
a.h文件
#ifndef A_H
#define A_H
extern int plus(int a,int b);
#endif
b.cpp文件
extern "c"{
#include<a.h>
}
int main(){
plus(2,3);
return 0;
}
对于c文件调用c++,则需要在用c++实现的函数头文件中提前用extern "c"进行声明,因为c文件本身只支持extern声明的,extern "c"是为了兼容已经写好的c语言库或者函数而设计出来的。
a.cpp文件
#include"a.h"
int plus(int a, int b){
    return a+b;
}
a.h文件
#ifndef A_H
#define A_H
extern "c" int plus(int a,int b);
#endif
b.c文件
#include<a.h>
extern int plus(int a, int b);
int main(){
plus(2,3);
return 0;
}
在混用操作时,一个标准头文件一般会如此定义:
#ifndef kaola
#define kaola
#ifdef _cplusplus
extern "c"{
#endif
*****
#ifdef _cplusplus
}
#endif
#endif
实现混用c和c++。
在c++中,_LINE_和_FILE_分别记录已经被编译的行数和正在被编译的文件名字,_TIME_和_DATE_分别记录当前被编译文件的编译时间和日期,格式hh:mm:ss和Oct 31 1996

欢迎各位大神拍砖,指正错误,多多交流,不胜感激~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值