C++中嵌入C代码方式和原理大家都比较清晰,主要就是C文件对于的头文件中加入:
#if defined(__cplusplus)
extern "C" {
#endif
//**************************具体内容
#ifdef __cplusplus
}
#endif /* __cplusplus */
通过如上方式,告知编译器,此处要使用C编译器(如果linux就是gcc)。
但最近一个vs的工程比较特殊,开始调试的时候,提示:
network.c(1026): error C2857: '#include' statement specified with the /Ycstdafx.h command-line option was not found in the source file
将这个C文件属性配置下:
从之前的default修改为Compile as C code, 之后可以从command line中查看到
再次编译,还是提示:
network.c(1026): error C2857: '#include' statement specified with the /Ycstdafx.h command-line option was not found in the source file
这个应该是包含文件的问题,查看配置,工程文件有预编译目录
而C文件的属性配置中,也有该配置,修改下:
之后编译就正常了。
主要原因还是C不能使用C++的预编译头文件,主要基于:预编译头文件通常包含了C++特定的语法、头文件(如 <iostream>
)或者类声明,这些对于纯C代码来说是无效的或不被识别的。C语言编译器无法解析C++的语法或特定的库函数,因此会导致编译错误。
以上就是一个visual studio编译知识点。