首页 > 其他分享 >【树莓派开发】gcc编译器中出现warning: #pragma once in main file

【树莓派开发】gcc编译器中出现warning: #pragma once in main file

时间:2024-09-02 16:25:55浏览次数:12  
标签:语句 树莓 头文件 gcc 编译器 pragma once


众所周知,#pragma once语句是防止头文件重复包含非常常用的一条语句
VS编译器在创建.h文件的时候会自动帮你在开头添加这个语句
但是在gcc编译器下,这个语句就可能会出现一些问题

所使用编译器:

  • VS2019(windows10)
  • 树莓派(linux-gcc)

warning: #pragma once in main file

在我尝试在linux环境下使用#pragma once语句时,遇到了这个报错

【树莓派开发】gcc编译器中出现warning: #pragma once in main file_linux

解决这个问题的办法很简单,就是不要编译头文件

编译器会自动展开头文件,无需手动编译

【树莓派开发】gcc编译器中出现warning: #pragma once in main file_开发语言_02

【树莓派开发】gcc编译器中出现warning: #pragma once in main file_linux_03

出现问题原因

网上查了查:出现这个问题的原因是编译器在编译头文件的时候,#pragma once本身是没有含义的语句,所以报错了。

  • 也有人说是因为linux不支持这个语句,我们来试试

右侧代码中包含了两个test.h的引用,在预处理中只包含了一次

【树莓派开发】gcc编译器中出现warning: #pragma once in main file_linux_04

去掉头文件中的#pragma once,再次编译,可以看到预处理文件中出现了两次头文件的内容

【树莓派开发】gcc编译器中出现warning: #pragma once in main file_树莓派_05

这说明linux-gcc编译器是支持该语句的,并非网上说的不支持!

其他解决方法

如果你的gcc编译器不管咋弄都有这个报错,咱可以不用它嘛!
使用条件编译指令ifndef也可以达成防止头文件重复包含的效果

#ifndef __TEST_H__//如果没有定义过这个符号
#define __TEST_H__//定义该符号

//头文件内容

#endif

【树莓派开发】gcc编译器中出现warning: #pragma once in main file_c语言_06


网上有关这个报错的信息的确不多,特此写篇博客记录一下

如果对你有帮助,还请点个

标签:语句,树莓,头文件,gcc,编译器,pragma,once
From: https://blog.51cto.com/musnow/11898941

相关文章

  • 【树莓派开发】树莓派安装vim编辑器(附带排错流程)
    文章目录前言1.用putty软件链接树莓派2.下载vim2.1错误:404无法下载2.2错误:下列软件包有未满足的依赖关系3.查看vim是否安装成功4.vim的基本操作5.用vim编写一个C语言代码结语前言Linux自带的编辑器有nano和vi,但vi编辑器使用起来很不方便。我们要先在树莓派上下载vim编辑器,它是vi......
  • 使用 树莓派3B+ 对日本葡萄园进行经济实惠的环境监测
    对于 菊岛邦夫—VineyardKikushima而言,RaspberryPi生态系统提供了支持和信息,通过基于温度和湿度监测的有针对性的最低限度杀虫剂方案,来提高葡萄的健康产量。VineyardKikushima:http://vykikushima.greater.jp/vineyards/解决方案RaspberryPi3B+企业规模中小......
  • linux编程——认识GCC编译器
    目录一、引言二、GCC编译器简介三、GCC的主要特点四、GCC的使用方法五、GCC的高级功能六、总结一、引言  在Linux编程的广阔世界中,GCC(GNUCompilerCollection)编译器无疑是一个至关重要的工具。对于广大的开发者来说,熟练掌握GCC编译器的使用,能够极大地......
  • 树莓派CM4(四):树莓派镜像替换内核
    树莓派镜像替换内核1.为什么要替换内核树莓派官方提供的镜像中,自带的内核版本为6.6.31然而github上提供的内核源码为6.6.40,有些微差别此外,后续很有可能进行内核裁剪定制,替换内核是一个无法绕开的工作2.获取内核源码github地址:https://github.com/raspberrypi......
  • C++拾趣——转换编译器生成的类型名为代码中的类型名
    大纲代码测试代码地址在软件开发中,特别是在使用C++这类静态类型语言时,编译器在编译过程中会生成许多内部表示,包括类型信息。这些内部类型名通常用于编译器的内部处理,比如类型检查、优化和代码生成等。然而,在编写源代码或进行调试时,我们更习惯于使用人类可读和易于理......
  • 拖拽神器:Pragmatic-drag-and-drop!
    前言在前端开发中,拖拽功能是一种常见的交互方式,它能够极大提升用户体验。今天,我们要介绍的是一个开源的前端拖拽组件—pragmatic-drag-and-drop,它以其轻量级、高性能和强大的兼容性,成为了前端开发者的新宠。什么是pragmatic-drag-and-drop?pragmatic-drag-and-drop是由A......
  • 树莓派相关项目
    1.树莓派3B来搭建一个稳定的WiFi监控平台,将其模拟成一个Wimonitor。借助树莓派模拟Wimonitor并实现WiFi窃听和嗅探2.基于树莓派的警用远程WiFi网络侦查取证系统及其方法与流程基于树莓派的警用远程WiFi网络侦查取证系统及其方法与流程3.基于树莓派的快速电子取证方法、装置......
  • 查询树莓派的ip地址的方法
    前言在树莓派没有外界显示器和鼠标键盘的情况下,但树莓派在之前使用时已经配置过热点名和密码,想查询树莓派的ip地址,下面分两种情况进行查询。1、树莓派通过以太网连接网络一般情况下,在电脑重新启动后需要重新打开网络共享以配置以太网,在下图中需要将左上角的WLAN属性里的勾......
  • 虚拟机与树莓派ping不通的解决方法
    文章目录一、查看是否为桥接模式二、查看电脑的网卡三、查看虚拟网络编辑器的网卡,虚拟机的网卡连接需要和电脑的网卡一致这样就可以ping通了一、查看是否为桥接模式点击ubuntu桌面右下角的点三个图标,然后点击设置2.选择桥接模式,再点击下方的确认二、查看电脑的......
  • 深入Swift内核:编译器诊断信息的奥秘与实践
    标题:深入Swift内核:编译器诊断信息的奥秘与实践在Swift语言的编程世界中,编译器的诊断信息是开发者与编译器沟通的桥梁。它不仅帮助开发者快速定位问题,还提供了解决问题的线索。本文将深入探讨Swift编译器的诊断信息工作原理,并结合代码示例,揭示如何有效利用这些信息优化代码......