当前位置: 首页 > news >正文

VS Code中主程序C文件引用了另一个.h头文件,编译时报错找不到函数

目录

  • 一、问题描述
  • 二、问题原因
  • 三、解决方法
  • 四、扩展
  • 五、通过CMake进行配置

一、问题描述

VS Code中主程序C文件引用了另一个.h头文件,编译时报错找不到函数

主程序 main.c

#include <stdio.h>
#include "sumaa.h"int main(int, char**){printf("Hello, from aaa!\n");printf("Hello, %d", sumAA(11, 22));
}

工具文件 sumaa.h

int sumAA(int a, int b);

实现文件 sumaa.c

#include <stdio.h>
#include "sumaa.h"int sumAA(int a, int b)
{return a+b;
}

运行,编译报错:

Starting build...
"C:\msys64\mingw64\bin\gcc.exe" -fdiagnostics-color=always -g "D:\uida0269\Desktop\aaa\main.c" -o "D:\uida0269\Desktop\aaa\main.exe"
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\uida0269\AppData\Local\Temp\ccOyf8me.o: in function `main':
D:/uida0269/Desktop/aaa/main.c:6: undefined reference to `sumAA'
collect2.exe: error: ld returned 1 exit statusBuild finished with error(s).

二、问题原因

编译报错时执行的命令,简化如下

gcc.exe"  -g main.c

所引用的 sumaa.c 并没有被包含在编译选项中

三、解决方法

在这里插入图片描述
修改 .vscode目录下的 task.json
args中的 ${file} 表示当前打开的文件,就是 main.c,我们在后面再加一个 "sumaa.c",这样的:

"args": ["-fdiagnostics-color=always","-g","${file}", "sumaa.c","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"
],

编译通过。

Hello, from aaa!
Hello, 33

四、扩展

如果引用了多个文件呢,不能一个个往里加吧
改为:*.c

"args": ["-fdiagnostics-color=always","-g","*.c","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"
],

验证过,也是OK的

五、通过CMake进行配置

具体的操作步骤,暂时不贴了,直接给出配置代码

CMakeLists.txt:

cmake_minimum_required(VERSION 3.0.0)
project(aaa VERSION 0.1.0 LANGUAGES C)
file(GLOB SOURCES "*.c")add_executable(aaa ${SOURCES})set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

这样配置后,用 CMake 运行也是OK的。

相关文章:

VS Code中主程序C文件引用了另一个.h头文件,编译时报错找不到函数

目录 一、问题描述二、问题原因三、解决方法四、扩展五、通过CMake进行配置 一、问题描述 VS Code中主程序C文件引用了另一个.h头文件&#xff0c;编译时报错找不到函数 主程序 main.c #include <stdio.h> #include "sumaa.h"int main(int, char**){printf(&q…...

边缘计算:重塑数字世界的未来

引言 随着物联网&#xff08;IoT&#xff09;设备的激增和5G网络的普及&#xff0c;我们正站在一个计算模式的新纪元门槛上——边缘计算。这一技术范式将数据处理和分析推向网络的边缘&#xff0c;即设备或终端&#xff0c;为实时性要求较高的应用提供了前所未有的可能性。 目…...

2024 前端面试题 附录3

这里记录的是昨天和今天原篇的知识点补充 原篇地址&#xff1a; 2024 前端面试题&#xff08;GPT回答 示例代码 解释&#xff09;No.41 - No.60 2024 前端面试题&#xff08;GPT回答 示例代码 解释&#xff09;No.61 - No.100 2024 前端面试题&#xff08;GPT回答 示例代…...

[Vue warn]: Duplicate keys detected: ‘1‘. This may cause an update error.

[Vue warn]: Duplicate keys detected: ‘1‘. This may cause an update error.——> Vue报错&#xff0c;key关键字不唯一&#xff1a; 解决办法&#xff1a;修改一下重复的id值&#xff01;&#xff01;&#xff01;...

Docker-Learn(二)保存、导入、使用Docker镜像

1.保存镜像 根据上一节内容&#xff0c;将创建好镜像进行保存&#xff0c;需要退出当前的已经在运行的docer命令行中断里面&#xff0c;可以通过在终端里面输入指令exit或者按下键盘上的 ctrlD建退出&#xff1a; 回到自己的终端里面&#xff0c;输入指令&#xff1a; docker…...

第三百一十五回

文章目录 1. 概念介绍2. 基本用法3. 补充用法4. 内容总结 我们在上一章回中介绍了"再谈ListView中的分隔线"&#xff0c;本章回中将介绍showMenu的用法.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在第一百六十三回中介绍了showMenu相关的内容…...

区块链(一): 以太坊基础知识

目录 什么是区块链&#xff1f;什么是以太坊&#xff1f;什么是加密货币&#xff1f;以太坊与比特币有什么不同&#xff1f;以太坊能做什么&#xff1f;什么是智能合约&#xff1f;以太坊社区以太坊白皮书 什么是区块链&#xff1f; 区块链是一个交易数据库&#xff0c;在网络…...

高级FPGA开发之基础协议PCIe

基础协议之PCIe部分 一、TLP包的包头 在PCIe的系统中&#xff0c;tlp包的包头的结构有许多部分是相似的&#xff0c;通过掌握这些常规的包头&#xff0c;能帮助理解在PCIe总线上各个设备之间如何进行数据的收发。 通用的字段 通用字段作用Fmt决定了包头是3DW还是3DW&#xff…...

Vue核心基础1:数据代理

1 回顾Object.defineProperty方法 let str hello const person {name: 张三,age: 18 } Object.defineProperty(person, sex, {// value: 男,// enumerable: true, // 控制属性是否可以枚举&#xff0c;默认值是false// writable: true, // 控制属性是否可以被修改&#xff0…...

12 ABC串口接收原理与思路

1. 串口接收原理 基本原理&#xff1a;通过数据起始位判断要是否要开始接收的数据&#xff0c;通过采样的方式确定每一位数据是0还是1。 如何判断数据起始位到来&#xff1a;通过边沿检测电路检测起始信号的下降沿 如何采样&#xff1a;一位数据采多次&#xff0c;统计得到高…...

leetcode(二分查找)34.在排序数组中查找元素的第一个和最后一个位置(C++详细解释)DAY11

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计…...

算法刷题框架

前言&#xff1a;最近积累了一些算法题量&#xff0c;正在刷东神的算法笔记&#xff0c;监督自己记录下读后启发&#xff0c;顺便帮助道友们阅读 数据结构 这一部分老生常谈&#xff0c;数据的存储方式只有顺序存储和链式存储。 最基本的数组和链表对应这两者&#xff0c;栈…...

跟着cherno手搓游戏引擎【24】开启2D引擎前的项目总结(包括前置知识汇总)

前置技术&#xff1a; c动态链接和静态链接&#xff1a; 隐藏的细节&#xff1a;编译与链接_哔哩哔哩_bilibili 【底层】动态链接库(dll)是如何工作的&#xff1f;_哔哩哔哩_bilibili 预编译&#xff0c;编译&#xff0c;汇编&#xff0c;链接 预编译头文件&#xff1a; 为…...

石子合并+环形石子合并+能量项链+凸多边形的划分——区间DP

一、石子合并 (经典例题) 设有 N 堆石子排成一排&#xff0c;其编号为 1,2,3,…,N。 每堆石子有一定的质量&#xff0c;可以用一个整数来描述&#xff0c;现在要将这 N 堆石子合并成为一堆。 每次只能合并相邻的两堆&#xff0c;合并的代价为这两堆石子的质量之和&#xff0c;…...

IMX6ULL移植U-Boot 2022.04

目录 目录 1.编译环境以及uboot版本 2.默认编译测试 3.uboot中新增自己的开发板 3.编译测试 4.烧录测试 5.patch文件 1.编译环境以及uboot版本 宿主机Debian12u-boot版本lf_v2022.04 ; git 连接GitHub - nxp-imx/uboot-imx: i.MX U-Boot交叉编译工具gcc-arm-10.3-2021.0…...

ES实战-高级聚合

多桶型聚合 1.词条聚合–terms 2.范围聚合–range 3,直方图聚合–histogram/日期直方图 4.嵌套聚合 5.地理距离聚合 include(包含)exclude(不包含) GET /get-together/_search?pretty {"size": 0,"aggs": {"tags": {"terms": {"…...

网络安全产品之认识蜜罐

文章目录 一、什么是蜜罐二、蜜罐的主要类型三、蜜罐的主要功能四、蜜罐的主要组成及核心技术五、蜜罐的优缺点六、蜜罐如何与其他安全工具协同工作&#xff1f;七、什么是“蜜网”&#xff1f;与蜜罐的联系和区别是什么&#xff1f; 蜜罐的概念首次由Clifford Stoll在其1988年…...

推荐《架构探险:从零开始写Java Web框架》

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 春节读了《架构探险&#xff1a;从零开始写Java Web框架》&#xff0c;一本大概10年前的好书。 本书的作者是阿里巴巴架构师黄勇。黄勇对分布式服务架构与大数据技术有深入…...

Go教程-Go语言简介

这篇文章我们来聊聊Go语言。 Go语言发展历史 以下是Go语言发展的几个里程碑节点&#xff1a; Go一开始是Google内部的一个项目&#xff0c;由三位大佬Rob Pike、Robert Griesemer、Ken Thompson早2007年发起。在2009年11月&#xff0c;Go语言正式对外开源。在2010年&#xf…...

React + SpringBoot + Minio实现文件的预览

思路&#xff1a;后端提供接口&#xff0c;从minio获取文件的预览链接&#xff0c;返回给前端&#xff0c;前端使用组件进行渲染展示 这里我从minio获取文件预览地址用到了一个最近刚开源的项目&#xff0c;挺好用的&#xff0c;大伙可以试试&#xff0c;用法也很简单 官网&am…...

深度解析:PaperZZ AI 如何把 “文献综述难产” 变成 “10 分钟定稿”?

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿/期刊论文paperzz - 文献综述https://www.paperzz.cc/journalsReviewed 提到本科毕业论文&#xff0c;比起提笔写正文&#xff0c;绝大多数同学的噩梦都是文献综述。这不仅是论文的开篇&#xff0c;更是评判…...

智炬星图:在AI星海中,为您点亮诚信与实力的导航灯塔

在数字时代的浪潮中&#xff0c;人工智能已成为驱动产业变革的核心引擎。然而&#xff0c;面对市场上琳琅满目的AI服务商&#xff0c;企业往往陷入选择困境&#xff1a;究竟哪家机构值得信赖&#xff1f;哪家公司能提供真正高效、可靠的智能解决方案&#xff1f;今天&#xff0…...

BetterJoy终极指南:3大难题快速解决Switch控制器PC连接问题

BetterJoy终极指南&#xff1a;3大难题快速解决Switch控制器PC连接问题 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode…...

零基础玩转通义千问3-Reranker:手把手教你搭建智能搜索排序系统

零基础玩转通义千问3-Reranker&#xff1a;手把手教你搭建智能搜索排序系统 1. 认识通义千问3-Reranker&#xff1a;你的智能搜索助手 想象一下&#xff0c;你在网上搜索"如何给树莓派安装Ubuntu Server"&#xff0c;搜索引擎返回了50个结果。前三条可能是广告&…...

百川2-13B-4bits量化原理解析:OpenClaw任务中的精度损失补偿方案

百川2-13B-4bits量化原理解析&#xff1a;OpenClaw任务中的精度损失补偿方案 1. 从一次失败的自动化任务说起 上周我尝试用OpenClaw自动整理一批技术文档时遇到了奇怪的现象&#xff1a;当AI助手处理到第37个Markdown文件时&#xff0c;突然开始重复生成相同的段落内容。查看…...

Jetson AGX Orin避坑指南:从换源到编译Torchvision,我踩过的那些ARM架构的‘坑’

Jetson AGX Orin避坑实战&#xff1a;ARM架构下的深度学习环境搭建血泪史 第一次把Jetson AGX Orin拿到手时&#xff0c;我天真地以为这不过是一台"加强版树莓派"。直到连续三天被各种404 Not Found、Illegal instruction (core dumped)和No matching distribution f…...

快速部署PyTorch 2.5:预装CUDA环境实战教程

快速部署PyTorch 2.5&#xff1a;预装CUDA环境实战教程 本文是一篇基础教程类文章&#xff0c;旨在帮助开发者快速上手使用预装了PyTorch 2.5和CUDA环境的深度学习镜像。无论你是刚接触深度学习的新手&#xff0c;还是需要快速搭建开发环境的老手&#xff0c;这篇教程都能让你…...

Spring Boot项目里Redis连接总报错?从配置到调试的完整避坑指南(附Redis 6+密码问题)

Spring Boot项目Redis连接报错全解析&#xff1a;从配置陷阱到高效调试 Redis作为Spring Boot项目中最常用的缓存组件&#xff0c;连接报错却是开发者最常遇到的"拦路虎"。明明按照文档配置了参数&#xff0c;却总是遇到Connection refused、NOAUTH Authentication r…...

保姆级教程:用SAP LSMW的Standard Batch/Direct Input搞定BOM批量导入(附FILE逻辑文件配置避坑指南)

SAP LSMW实战&#xff1a;BOM批量导入全流程解析与避坑指南 引言&#xff1a;为什么选择Standard Batch/Direct Input&#xff1f; 刚接触SAP PP模块的顾问们&#xff0c;第一次面对BOM批量导入任务时往往手足无措。Excel表格里整齐排列的物料清单&#xff0c;如何在SAP系统中…...

ChatGLM3-6B-128K部署指南:Ollama环境配置避坑大全

ChatGLM3-6B-128K部署指南&#xff1a;Ollama环境配置避坑大全 本文面向需要处理长文本任务的开发者和研究者&#xff0c;手把手教你如何快速部署ChatGLM3-6B-128K模型&#xff0c;避开环境配置中的常见坑点。 1. 环境准备与快速部署 在开始部署之前&#xff0c;我们先简单了解…...