当前位置:  技术问答>linux和unix

[c/c++互相包含困惑]c文件包含c++头文件

    来源: 互联网  发布时间:2016-10-29

    本文导语:  用.c文件去包含一个 cpp定义的头文件,结果报出类似以下的一大堆错误: expected ';', ',' or ')' before '&' token expected declaration specifiers or '...' before 'UsFileOpenMode' 情况是这样的: 有以下文件: cfile.c cppfile1.cpp cppfil...

用.c文件去包含一个 cpp定义的头文件,结果报出类似以下的一大堆错误:
expected ';', ',' or ')' before '&' token
expected declaration specifiers or '...' before 'UsFileOpenMode'

情况是这样的:
有以下文件:
cfile.c
cppfile1.cpp
cppfile1.h
cppfile2.cpp

在cppfile2.cpp中 #include "cppfile1.h" 就完全正常,没有任何问题
但是如果在cfile.c中 #include "cppfile1.h" 就会报出以上那些错误

所以想请教:
是因为c++的头文件不能被 c文件包含么?
如果是这样,是因为 c编译器无法识别c++编译器标识的函数吗?

另外,引申出来的问题:
1. c++ 使用 c 的文件,需要在c的头文件里加 extern "C" {}
2. c 使用 c++的文件,是要在c++ 头文件和实现文件里 也加 extern "c" 吗?
   这样,其它 c++文件在使用这个 c++头文件时,ok吗?
3. 还有其它什么注意事项,也请多多指点 多谢!


|
c++头文件里难免有些类、引用等等c语言里面没有的东西,把他们包含到c文件里,gcc可处理不了。
比如楼主提到的 expected ';', ',' or ')' before '&' token 
多半就是因为某个函数声明里有引用。

我觉得,c文件包含c++文件不太好,首先应该设法从设计上避免。
为什么要包含这个头文件?大概是为了宏定义、函数声明等等,既然这些东西要被c文件用到,那么就应该尽量把他们都单独拿出来作为一个c的头文件。

如果一定要让c文件包含c++文件,那就只能设法让c编译器看不到那些只有c++才能支持的东西。比如这样:
#ifdef __cplusplus 
class { ... };
#endif

|
等别人回答我的问题,顺便把我知道的说下吧.

我所碰到的cc++混编,C++头文件不能被C文件包含.

1.是.
2.简单的方法是,在cpp文件中,把#include 的C头文件用Extern "c" {}括起来就行了.或者在整个C头文件中.
不会受到影响. 

3.其它的貌似没有了...碰到再问吧.

|
都说得很详细了

    
 
 

您可能感兴趣的文章:

  • 哪里有C++标准库(包含模板库)的文档可以下载?
  • Linux下C++编程时的包含标准库的头文件问题
  • 请问linux下有什么好的C、C++开发IDE,能包含C、C++齐备的文档就更好了
  • 从网上载了个C++程序的源代码,包含38个.cpp和.h,还有makefile.in和makefile.am两个文件,但无configure和makefile.请问怎么编译?谢谢!
  • C++ 中能包含 #include<curses.h>吗?
  • 在AIX中如何统计一个文件夹中文件名所有包含2008的文件的大小之和
  • Linux查找包含指定文字的文件(linux查找指定文件)
  • 如何删除文件夹(文件夹包含文件和子目录)
  • C语言当中的FCB文件控制块包含在哪个头文件?
  • 如何 列出目录下包含指定内容的文件的文件名?
  • 关于头文件包含问题的一点疑惑......
  • 在unix下一个文件夹能包含多少个文件
  • 查找不包含某字段的文件
  • 怎么打开包含linux原文件的.iso光盘文件
  • 查找文件包含文字。包括子目录中的文件
  • 请问:proc中的头文件中能包含头文件吗?(感觉如果头文件中包含头文件的话,在链接时就会有错误啊)
  • g++:如何包含外部头文件的文件夹?(急着用,在线等,谢谢大家了)
  • 请教:修改Linux内核时,需要调用驱动程序的函数,头文件也包含了,但是编译时候说头文件找不到!
  • makefile 中如何包含头文件
  • 请问:定义文件里需不需要用#include 将对应的头文件包含进来啊?
  • 如何设置包含文件的路径
  • 请问linux系统调用需要包含头文件么?
  • 程序包含头文件的问题
  • 为什么调用很多linux下的函数时需要包含多个头文件?
  • g++:如何包含外部头文件的文件夹?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 网站英文/中文域名字符集即网站英文/中文域名可以包含哪些字符
  • 一个静态库包含多个函数,应用程序连接了库中的某个函数,应用程序目标代码中是否还包含了该静态库中的其他函数代码?
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • JSP页面的动态包含和静态包含示例及介绍
  • 請問在一個分成上下兩個框架的整個頁面中,上面框架是包含一個form的form.jsp頁面,下面框架則是包含table的另一table.jsp頁面,當按下fo
  • 如何把ascii值转化成字符,字符串中如何包含一个双引号?
  • redhat 3张光盘中那一张包含源码?
  • 三张光盘的RedHatLinux9.0包含源代码吗?
  • 在jb6中,如何制作包含jdbc和自定义包的jar文件。
  • 到底包含哪个termios.h头文件?
  • 内核模块编程,要包含那些头文件
  • 如何查找没有包含指定文件的所有目录?
  • 建一个linux共享库(.so.x.x文件)里边包含类、全局变量,结构体等
  • php 判断字符串是否包含html标签
  • 哪儿有包含linux 基本命令的linux入门电子书下载?
  • 誰知道MYsql数据库下载的地方,(包含LINUX及window版本的)
  • 一个包含文件引起的变量重复定义的问题,高手请援助!
  • 请教如何在指定目录下查找包含指定文字的文件
  • 使用timer_create应该包含哪一个库啊?连接的时候报错。
  • 已知一段文本,在unix怎样查找包含该文本的文件
  • 在UNIX中可以包含STL算法吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3