基础原理
编译器编译cpp文件时,__cplusplus会被定义,C文件编译的时候,_STDC_会被定义,_SDTC_是预定义的宏,当期被定义后,编译器按照ANSIC标准编译C语言程序
代码举例
1.头文件test.h
#include<stdio.h>
#ifdef _cplusplus
#define USING_C 0
#else
#define USING_C 1
#endif
- main文件test.cpp
#include"test.h"
int main()
{
if (USING_C)
printf("C\n");
else
printf("C++\n");
return 0;
}
用的是VS2015结果输出为C,为啥不是C++,不清楚是啥原因?
把头文件替换成#include,结果还是保持一致
最后定位出来是个低级错误,是__cplusplus 不是_cplusplus