编译警告"struct declared inside parameter list"

2023-11-04

近来在阅读linux-2.6.37中cgroup的相关代码,读到include/linux/cgroup.h的开头时犯了嘀咕:

 

#include <linux/sched.h>
#include <linux/cpumask.h>
#include <linux/nodemask.h>
#include <linux/rcupdate.h>
#include <linux/cgroupstats.h>
#include <linux/prio_heap.h>
#include <linux/rwsem.h>
#include <linux/idr.h>

#ifdef CONFIG_CGROUPS

struct cgroupfs_root;
struct cgroup_subsys;
struct inode;
struct cgroup;
struct css_id;


extern int cgroup_init_early(void);
extern int cgroup_init(void);
extern void cgroup_lock(void);

extern int cgroup_lock_is_held(void);
extern bool cgroup_lock_live_group (struct cgroup *cgrp);

......

 

在此头文件的后面有cgroupfs_root、cgroup_subsys、cgroup这三个结构的定义,为何此处需要这么几行代码?

 

将此处的"strct cgroup;“注释掉之后,重新编译内核报出如下错误和警告:

 

kernel/cgroup.c:1910: error: conflicting types for ‘cgroup_lock_live_group’
include/linux/cgroup.h:32: error: previous declaration of ‘cgroup_lock_live_group’ was here
kernel/cgroup.c:1918: error: conflicting types for ‘cgroup_lock_live_group’
include/linux/cgroup.h:32: error: previous declaration of ‘cgroup_lock_live_group’ was here

 

include/linux/cgroup.h:32: warning: ‘struct cgroup’ declared inside parameter list
include/linux/cgroup.h:32: warning: its scope is only this definition or declaration, which is probably not what you want

 

由此我们可以知道,由于在cgroup.h文件中,struct cgroup结构定义在函数声明

extern bool cgroup_lock_live_group (struct cgroup *cgrp);

之后,所以编译的时候将struct cgroup作为在参数列表中定义的空结构处理了,这样在编译cgroup.c的时候便与真实的cgroup_lock_live_group函数定义冲突。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编译警告"struct declared inside parameter list" 的相关文章

随机推荐

  • ThinkpadE480 win10改win7

    Thinkpad E480win10改win7 电脑配置信息 i7 8550u 直接进PE 一键装机 选择win7镜像安装到系统盘 安装后进系统失败 没有修改bios信息 win10系统改win7设置bios方法图文教程 一起来围观吧 ht
  • Vue3导出excel,使用js-table2excel

    装依赖 npm install js table2excel vue中引入 import table2excel from js table2excel 使用 const column title sn key sn type text t
  • Mysql命令及增删改查操作

    测试工程师的目的是找出软件的不足 并告诉开发工程师 出现问题的环境 操作步骤和输入输出数据 优秀的测试工程师 需要告诉开发团队 软件的不足 这类不足会导致什么情况 如何避免 以及如何去修改 这是为什么高级软件测试工程师比开发工程师工资高的原
  • Qt应用开发(基础篇)——组合框容器 QGroupBox

    一 前言 QGroupBox继承于QWidget 是一个带有标题的组合框架容器控件 QGroupBox组合框容器自带一个顶部标题 一个面板 面板内部展示各种各样的部件 标题用来解释这些部件为什么集合在一起 并且支持键盘快捷方式切换部件焦点
  • c++读文件(一次全读/每行读/多次读)

    我以为这些都很容易在网上找到 谁知网上乱七八糟的东西太多 让我找了很久 开发环境为Windows VS2013 一次全读 std ifstream t path 读文件ifstream 写文件ofstream 可读可写fstream std
  • 开源IOT——一个最小的物联网系统设计方案及源码

    或许这个可以当成是你的毕业设计又或者你可以用它来控制你想控制的东西 总之你可以用它来做一个最小的物联网系统 不过 在这里可能没有那么复杂的功能 因为强调的是最小 BareMinimum 这也是为什么我没有改Arduino上面的工程名的原因
  • [附源码]计算机毕业设计校园疫情管理系统Springboot程序

    项目运行 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe MyEclispe Sts都支持 项目技术 SSM mybatis Ma
  • SpringMVC SpringBoot Get请求接收复杂参数

    前沿 对于复杂的接口请求 一般都用POST JSON数据的方式 后端用 RequestBody接收 但是对于某些有洁癖的人或者想严格遵循类Restful风格的人来讲 查询数据就是想用GET 怎么实现呢 Request Data public
  • can总线的示波器检测方法

    整理自网络 stm32的can总线是在APB1上的 stm32f10x的主频是72Mhz can外设时钟是36Mhz stm32f2xx的主频是120Mhz can外设时钟是30Mhz STM32 APB1和APB2区别 APB2负责AD
  • Linux统计某文件夹下文件、文件夹的个数

    http blog sina com cn s blog 464f6dba01012vwv html 统计某文件夹下文件的个数 ls l grep wc l 统计某文件夹下目录的个数 ls l grep wc l 统计文件夹下文件的个数 包
  • 瞧瞧,这样的「函数」才叫 Pythonic

    在机器学习中 我们经常需要使用类和函数定义模型的各个部分 例如定义读取数据的函数 预处理数据的函数 模型架构和训练过程的函数等等 那么什么样的函数才是漂亮的 赏心悦目的代码呢 本期教程 会从命名到代码量等六方面探讨如何养成美妙的函数 文末有
  • Python之序列

    序列是一种数据存储方式 用来存储一系列的数据 在内存中 序列就是一块用来存放多个值的连续空间 比如一个整数序列 10 20 30 40 可以这样表示 由于Python3中一切皆对象 在内存中实际是按照如下方式储存的 a 10 20 30 4
  • windows自带虚拟机无法正确安装软件 解决方案

    使用的虚拟机版本Ubuntu 20 04 4 LTS 错误描述 ruby DESKTOP LP8NQUK tmp test sudo apt install imagemagic 6 q16 sudo password for ruby R
  • Linux如何用ftp传输文件【ftp命令】

    Linux如何用ftp传输文件 ftp命令 Windows Linux 带端口的ftp命令 使用 FTP 下载文件 使用 FTP 上传文件 关闭FTP连接 Windows 在Windows系统中 可以用可视化的ftp来传输文件 或者下在文件
  • 第二章:25+ Python 数据操作教程(第八节如何从 PANDAS DATAFRAME 中删除一列或多列)

    在本教程中 我们将介绍如何从 pandas 数据框中删除或删除一个或多个列 是一个用于数据操作的 python 包 它具有以下数据任务的几个功能 目录 在 python 中删除一列 在 Python 中删除多列 如何从 pandas Dat
  • tp5 使用_initialize做验证时验证失败不能直接返回数据和打断程序运行

    在项目开发时写了一个基类 让其他控制器都继承这个类 当访问控制器时基类某些验证时 直接截断返回错误不执行控制器中的解决办法 失败写法 return json encode data 正确写法 echo json encode data ex
  • 利用XSS获取cookie

    如果web应用在用户输入的地方没有过滤特殊字符 比如 lt gt
  • MapReduce思想的学习

    这学期教hadoop 发现在备课MapReduce思想的时候 查阅资料基本上所有博客都没有真正讲出MapReduce的思想 而只是把它的计算过程讲出来 甚至有些说法还是误人子弟的 所以我就一直在想如何能把MapReduce的思想讲得通俗易懂
  • 大数据应用——zookeeper集群部署

    本地模式安装 安装前准备 1 安装 JDK 拷贝 apache zookeeper 3 5 7 bin tar gz 安装包到 Linux 系统下 解压到指定目录 hadoop hadoop101 software tar zxvf apa
  • 编译警告"struct declared inside parameter list"

    近来在阅读linux 2 6 37中cgroup的相关代码 读到include linux cgroup h的开头时犯了嘀咕 include