在进行native开发的时候,难免会遇到C文件包含C++头文件而调用C++函数,若没做什么处理,直接include进行编译的话,会遇到以下错误:

error: unknown type name ‘class’

error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token

那么怎么解决呢?

首先,找下报错的原,从C以及C++特性不难发现:C文件include了带有C++关键字的头文件,如class等,因此,包含C++关键字的头文件被C编译器所编译,而不是用C++编译器编译,而C编译器无法识别C++的关键字,所以报错。那么解决方法很自然有两种方法:

第一种是最简单的就是统一用C++,把c文件改cpp;

第二种方法就是

在所有使用C++方法的地方加上:#ifdef __cplusplus,如:

#ifdef __cplusplus
class A{

};

endif

注:如果使用了extern “C” ,也要加上#ifdef __cplusplus,因为C编译器无法识别extern “C”:

#ifdef __cplusplus

extern “C” {

#endif

……

#ifdef __cplusplus

}

#endif

转载自:https://blog.csdn.net/acm2008/article/details/44747787

        </div>

NDK编译c包含C++头文件时,出现 error: unknown type name 'class' 的解决方法相关推荐

  1. unknown error mysql_mysql执行sql文件报错Error: Unknown storage engine‘InnoDB’的解决方法...

    发现问题 最近在工作中遇到一个问题,在运行了一个innoDB类型的sql文件,报了Error: Unknown storage engine 'InnoDB'错误,网上查了很多方法,但是都没办法真正解 ...

  2. linux编译寻找包含的头文件,Linux编写内核模块编译时找不到头文件

    //所有模块都需要的头文件#include // init&exit 相关宏MODULE_LICENSE("GPL");static int __init hello_in ...

  3. .NET上传大文件时提示Maximum request length exceeded错误的解决方法

    使用IIS托管应用程序时,当我们需要上传大文件(4MB以上)时,应用程序会提示Maximum request length exceeded的错误信息.该错误信息的翻译:超过最大请求长度. 解决方法: ...

  4. Word 在试图打开文件时遇到错误 文档可能已损坏 解决方法

    我使用的是 Office 2019 的 Word 打开后缀名为 doc 的文件. 错误信息: 有多种原因可导致显示此错误消息. 文档可能已损坏.请使用"恢复文本"转换器或" ...

  5. idea设置了默认换行符,ctl + s 保存文件时换行符没有变成默认换行符 解决方法

    设置默认换行符 首先我们在idea的设置中,设置默认的换行符. 因为linux 和 windows 以及 macos 各个操作系统的换行符不一致,根据自己的需求进行选择 快捷替换 在idea的右下角可 ...

  6. 安卓AS时关于ERROR: Connection timed out: connect的解决方法:(自我总结,不足之处请见谅)

    ERROR: Connection timed out: connect:错误:连接超时:连接 这个错误 一般来说是因为.gradle引起的 (1).gradle下载的不全 (2)网络原因<10 ...

  7. C++包含头文件时尖括号和双引号区别

    原文链接:http://c.biancheng.net/cpp/biancheng/view/66.html 如果你还看一些别的C++教程,那么你可能很早就发现了,有些书上的#include命令写作# ...

  8. VSCODE编译头文件时函数没有定义的解决方案(VSCODE手动链接C文件方法)

    VSCODE编译头文件时函数没有定义的解决方案(VSCODE手动链接C文件方法) 参考文章: (1)VSCODE编译头文件时函数没有定义的解决方案(VSCODE手动链接C文件方法) (2)https: ...

  9. glibc的头文件 linux_求助,编译glibc头文件时出错

    我用的软件包如下: binutils-2.16.tar.gz gcc-3.4.4.tar.bz2 glibc-2.3.5.tar.gz glibc-linuxthreads-2.3.5.tar.gz ...

最新文章

  1. 前端入门(加载特效,css)
  2. css img重复_20 个 CSS 快速提升技巧
  3. 中午xxx遭受攻击,然后发现C盘空间体积缩小,发现该目录占用1G多,全部是站点
  4. java 创建者设计模式_Java设计模式之创建者模式分享热爱编程,程序人生
  5. Linux概述及centos版本介绍和下载地址
  6. 签名证书无效”-在vCenter Server Appliance 6.5 / 6.7上使用Shell脚本重新生成和替换已过期的STS证书(76719)
  7. Leetcode每日一题:290.word-pattern(单词规律)
  8. P1681 最大正方形II (动态规划)
  9. 简析 __init__、__new__、__call__ 方法
  10. linux 系统监控、诊断工具之 lsof 用法简介
  11. 安装布署rsync+Inotify实现数据的实时同步更新
  12. 【LDO稳压器】SOT23-5封装-RT9193-RT9013-LP2992-LP5907设计
  13. BlackBerry Internet Service故障:公司内部同事无法互通邮件,对外联络没有问题
  14. [Python] 央视新闻联播推送
  15. 全面剖析:“外包”浪潮以及程序员应对攻略
  16. JavaScript获取法定节假日
  17. PyQt5中为窗口添加菜单工具栏状态栏
  18. TikTok干货分享:月入20000美金的操作手法分享
  19. 32java访问(http):国家气象局 免费接口
  20. vulnhub靶机-djinn2

热门文章

  1. Oracle归档日志与非归档日志的切换及路径设置
  2. java 课后习题 计算两个日期之间的天数
  3. NodeJS获取命令行后面的参数
  4. 判断两个数组有相同的数据
  5. 【记录】启用Windows 10下的linux子系统
  6. 【React 基础】之 React 基本介绍、jsx 规则、模块与组件
  7. 【PHP】使用PHP抓取Bing每日图像并为己所用
  8. 【Python】画一个心形
  9. C#开发笔记之19-如何用C#实现优雅的Json解析(序列化/反序列化)方案?
  10. heroku_Heroku Connect的美丽:简化数据库同步