众所周知,#pragma once
语句是防止头文件重复包含非常常用的一条语句
VS编译器在创建.h文件的时候会自动帮你在开头添加这个语句
但是在gcc编译器下,这个语句就可能会出现一些问题
所使用编译器:
- VS2019(windows10)
- 树莓派(linux-gcc)
warning: #pragma once in main file
在我尝试在linux环境下使用#pragma once
语句时,遇到了这个报错
解决这个问题的办法很简单,就是不要编译头文件
编译器会自动展开头文件,无需手动编译
出现问题原因
网上查了查:出现这个问题的原因是编译器在编译头文件的时候,#pragma once
本身是没有含义的语句,所以报错了。
- 也有人说是因为linux不支持这个语句,我们来试试
右侧代码中包含了两个test.h的引用,在预处理中只包含了一次
去掉头文件中的#pragma once
,再次编译,可以看到预处理文件中出现了两次头文件的内容
这说明linux-gcc编译器是支持该语句的,并非网上说的不支持!
其他解决方法
如果你的gcc编译器不管咋弄都有这个报错,咱可以不用它嘛!
使用条件编译指令ifndef也可以达成防止头文件重复包含的效果
#ifndef __TEST_H__//如果没有定义过这个符号
#define __TEST_H__//定义该符号
//头文件内容
#endif
网上有关这个报错的信息的确不多,特此写篇博客记录一下
如果对你有帮助,还请点个👍,万分感谢!