gcc和g++的区别以及明明函数有定义为何链接找不到

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。

源码指引:github源码指引_初级代码游戏的博客-CSDN博客


        g++和gcc似乎没什么区别,比如“gcc -v”和“g++ -v”的输出是完全一样的,用来编译好像也没什么区别,都能编译.c和.cpp,但是分别编译.c和.cpp却又不能链接,怎么回事呢?

目录

g++会把.c当成C++代码

gcc无法链接C++的.o

明明函数有定义为何链接找不到


g++会把.c当成C++代码

        这意味着对.c编译出来的.o并不是C的,而是C++的(符号名称做了扩展)。

        对于.cpp,两个命令并无区别,都是当作C++。

        如果代码只是自己用,全部用g++就可以了,如果考虑共享,最好C还是C,C格式C和C++都能用,C++格式只能C++用。

gcc无法链接C++的.o

        所以只能用g++来链接(除非所有模块都是C的)。

明明函数有定义为何链接找不到

        一般就是因为搞错了代码实际是当作C还是C++来编译的,以C++方式编译的符号名会带上类型和参数信息。以C++方式编译的C文件和由C++包含的C的头文件会发生这种诡异的问题。

        为了解决这个问题,C的头文件一般(但不是全部)会提前考虑:

#ifdef __cplusplus
extern "C"
{
#endif//。。。。。。 将被编译为C格式的声明#ifdef __cplusplus
}
#endif

        这样当头文件被C++代码使用的时候,会按照C规则处理相关符号。 

        如果C的头文件没有这样做,C++那边也可以很简单地处理,将include放在extern"C"里面即可:

extern "C"
{
#include "C的未处理__cplusplus的头文件"
}

        __cplusplus是一个标准的预定义的宏,用来表示正在按照C++而不是C来编译。


(这里是文档结束)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/16718.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ESM3(1)-介绍:用语言模型模拟5亿年的进化历程

超过30亿年的进化在天然蛋白质空间中编码形成了一幅生物学图景。在此,作者证明在进化数据上进行大规模训练的语言模型,能够生成与已知蛋白质差异巨大的功能性蛋白质,并推出了ESM3,这是一款前沿的多模态生成式语言模型,…

在大型语言模型(LLM)框架内Transformer架构与混合专家(MoE)策略的概念整合

文章目录 传统的神经网络框架存在的问题一. Transformer架构综述1.1 transformer的输入1.1.1 词向量1.1.2 位置编码(Positional Encoding)1.1.3 编码器与解码器结构1.1.4 多头自注意力机制 二.Transformer分步详解2.1 传统词向量存在的问题2.2 详解编解码…

【黑马点评】 使用RabbitMQ实现消息队列——3.批量获取1k个用户token,使用jmeter压力测试

【黑马点评】 使用RabbitMQ实现消息队列——3.批量获取用户token,使用jmeter压力测试 3.1 需求3.2 实现3.2.1 环境配置3.2.2 修改登录接口UserController和实现类3.2.3 测试类 3.3 使用jmeter进行测试3.4 测试结果3.5 将用户登录逻辑修改回去3.6 批量删除生成的用户…

【安全靶场】信息收集靶场

靶场:https://app.hackinghub.io/hubs/prison-hack 信息收集 子域名收集 1.subfinder files.jabprisons.com staging.jabprisons.com cobrowse.jabprisons.com a1.top.jabprisons.com cf1.jabprisons.com va.cobrowse.jabprisons.com vs.jabprisons.com c…

springboot239-springboot在线医疗问答平台(源码+论文+PPT+部署讲解等)

💕💕作者: 爱笑学姐 💕💕个人简介:十年Java,Python美女程序员一枚,精通计算机专业前后端各类框架。 💕💕各类成品Java毕设 。javaweb,ssm&#xf…

(一)获取数据和读取数据

获取公开数据 下载、爬虫、API 一些公开数据集网站: 爬虫: 发送请求获取网页源代码——解析网页源代码内容,提取数据 通过公开API获取: API定义了两个程序之间的服务合约,即双方是如何使用请求和响应来进行通讯的…

在MacBook Air上本地部署大模型deepseek指南

随着大模型技术的兴起,越来越多的人开始关注如何在本地部署这些强大的AI模型。如果你也想体验大模型的魅力,那么这篇文章将指导你如何在你的MacBook Air上本地部署大模型. 工具准备 为了实现本地部署,你需要以下工具: Ollama&a…

Windows中使用Docker安装Anythingllm,基于deepseek构建自己的本地知识库问答大模型,可局域网内多用户访问、离线运行

文章目录 Windows中使用Docker安装Anythingllm,基于deepseek构建自己的知识库问答大模型1. 安装 Docker Desktop2. 使用Docker拉取Anythingllm镜像2. 设置 STORAGE_LOCATION 路径3. 创建存储目录和 .env 文件.env 文件的作用关键配置项 4. 运行 Docker 命令docker r…

git学习【个人记录b站尚硅谷】

git学习 Git基本命令操作设置用户签名初始化本地库添加文件从工作区到暂存区将文件从暂存区添加到本地库修改文件重新提交 Git分支Github操作创建远程库上传到远程库克隆到本地文件夹拉取远程库最新版本到本地 总结 Git基本命令操作 设置用户签名 git config --global user.n…

【R语言】t检验

一、基本介绍 t检验(t-test)是用于比较两个样本均值是否存在显著差异的一种统计方法。 t.test()函数的调用格式: t.test(x, yNULL, alternativec("two.sided", "less", "greater"), mu0, pairFALSE, var.eq…

TDengine 产品由哪些组件构成

目 录 背景产品生态taosdtaosctaosAdaptertaosKeepertaosExplorertaosXtaosX Agent应用程序或第三方工具 背景 了解一个产品,最好从了解产品包括哪些内容开始,我这里整理了一份儿 TDegnine 产品包括有哪些组件,每个组件作用是什么的说明&a…

实现限制同一个账号最多只能在3个客户端(有电脑、手机等)登录(附关键源码)

如上图,我的百度网盘已登录设备列表,有一个手机,2个windows客户端。手机设备有型号、最后登录时间、IP等。windows客户端信息有最后登录时间、操作系统类型、IP地址等。这些具体是如何实现的?下面分别给出android APP中采集手机信…

使用 Docker 安装 Open WebUI 并集成 Ollama 的 DeepSeek 模型

文章目录 使用 Docker 安装 Open WebUI 并集成 Ollama 的 DeepSeek 模型前提条件1. 安装ollama2. 拉取deepseek的模型3. Open-WebUI 说明4. 启动容器文档的方法如下优化命令(可选)1. 增加了健康检查机制(--health-cmd)2. 使 WebUI…

Untiy3d 铰链、弹簧,特殊的物理关节

(一)铰链组件 1.创建一个立方体和角色胶囊 2.给角色胶囊挂在控制脚本和刚体 using System.Collections; using System.Collections.Generic; using UnityEngine;public class plyer : MonoBehaviour {// Start is called once before the first execut…

【NLP 21、实践 ③ 全切分函数切分句子】

当无数个自己离去,我便日益坦然 —— 25.2.9 一、jieba分词器 Jieba 是一款优秀的 Python 中文分词库,它支持多种分词模式,其中全切分方式会将句子中所有可能的词语都扫描出来。 1.原理 全切分方式会找出句子中所有可能的词语组合。对于一…

团结引擎 OpenHarmony 平台全面支持 UAAL,实现引擎能力嵌入原生应用

团结引擎1.4版本已于近日正式发布!在这一版本中,OpenHarmony 平台迎来了一个具有里程碑意义的更新:全面支持 Used as a Library(UAAL)。UAAL 这一技术方案,具有将引擎嵌入原生应用的独特能力,其…

自己部署DeepSeek 助力 Vue 开发:打造丝滑的标签页(Tabs)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 自己…

DeepSeek渣机部署编程用的模型,边缘设备部署模型

DeepSeek渣机部署编程用的模型,边缘设备部署模型 文章目录 DeepSeek渣机部署编程用的模型,边缘设备部署模型前言一、python代码二、构建一个简单的前端来接入接口2.读入数据 总结 前言 也许大家伙都想完成一些部署DeepSeek的东西,不过部署并…

VS2019打开《喜缺全书算法册》附带代码的方法兼述单元测试

下载地址(大量的题目和测试用例) 下载:地址一,几乎实时更新 GitCode下载。 下载地址二,不定期更新csdn打包下载 如果这两个链接打不开,可能是这两个资源处于审核状态,快则几分钟,慢则2天。 可以加本文末的&#xff31…

急停信号的含义

前言: 大家好,我是上位机马工,硕士毕业4年年入40万,目前在一家自动化公司担任软件经理,从事C#上位机软件开发8年以上!我们在开发C#的运动控制程序的时候,一个必要的步骤就是确认设备按钮的急停…