首页 > 其他分享 >GCC编译遇到“a label can only be part of a statement and a declaration is not a statement”问题

GCC编译遇到“a label can only be part of a statement and a declaration is not a statement”问题

时间:2024-05-25 10:41:27浏览次数:21  
标签:case fork GCC errno pid label wstatus statement

  • 问题原因:switch中case里面的局部变量出错
  • 解决方法:将case里面定义的局部变量在switch外面定义。
//报错情况
        switch (fork()) {
        case -1:
            error(1, errno, "fork");
        case 0:
            // 子进程执行命令
            if (execvp(args[0], args) == -1) { 
                error(1, errno, "execvp");
            }
        default:
            // 父进程等待子进程结束
            int wstatus;
            pid_t pid = wait(&wstatus);
            printf("\n%d terminated. ", pid);
            print_wstatus(wstatus);
        }
//解决方案
int wstatus;
        pid_t pid;
        switch(fork()){
        case -1:
            error(1,errno,"fork");

        case 0:
            if(execvp(args[0],args) == -1){
                error(1,errno,"execvp");
            }
           // exit(1);
        default:

            pid = wait(&wstatus);
            if(pid > 0){
                printf("\nchildpid:%d ",pid);
                print_wstatus(wstatus);
            }
         }

标签:case,fork,GCC,errno,pid,label,wstatus,statement
From: https://www.cnblogs.com/Uiney117/p/18212144

相关文章

  • GCC词法语法分析——AST输出及图示
    gcc提供了-fdump-tree-original、-fdump-tree-all等选项,可以输出gcc处理源代码过程中的AST及GIMPLE中间表示信息。例如使用-fudmp-tree-original就可以输出GCC进行词法/语法解析后所生成的AST信息,然而该AST信息过于繁杂,不便于分析,本文通过在GCC源代码中增加一些调试语句,从而输......
  • k8s——pod(label和selector)
    k8s的label和selector在Kubernetes中,label和selector是两个重要的概念,它们一起用于实现资源对象的关联和调度。label创建label有两种方式创建label:在配置文件中指定label标签使用kubectllabel命令临时创建labelkubectllabelpo资源名字app=hello//定义的label-......
  • C++学习----gcc
    gcc编译步骤 静态库使用步骤hello_fn.h#ifndef_HELLO_FN_H#define_HELLO_FN_Hvoidhello(constchar*name);#endifhello_fn.c#include<stdio.h>#include"hello_fn.h"voidhello(constchar*name){printf("hello%S!!!\n",name);......
  • labelme去除空图片
    Labelme是一个用于图像标注的开源工具。在使用Labelme进行数据标注后,可能会生成一些空的图像文件(即没有进行标注的图片),这些空图片通常不应该被使用。以下是一个简单的Python脚本,用于检测和删除这些空的标注文件:点击查看代码importosimportjsondefis_image_empty(image_p......
  • 中标麒麟V7系统安装后gcc和g++无法联网下载怎么办 -依赖检测失败
    中标麒麟V7系统安装后gcc和g++无法联网下载怎么办在上边教程中使用指明的安装包上传到离线中标麒麟服务器后出现报错错误:依赖检测失败:libgcc>=4.9.2-1.nd7.4被gcc-4.9.2-1.nd7.4.x8664需要 检查发现需要的包与下载的包系统版本不一致使用命令uname-a查询本......
  • labelme标注后的图片切成小图和小json
    splitMission.py和generateLabel.py两个脚本复制到4张图片和json所在的文件夹(最好是4的倍数因为默认以4个线程并行执行)中D:\pic\zhongwei\to_test\4picsplitMission.py点击查看代码importcv2importosimportbase64fromPILimportImageimportPILimportioimport......
  • centos7 编译gcc
    https://linuxhostsupport.com/blog/how-to-install-gcc-on-centos-7/ HowToInstallGCConCentOS7rial,wewilltakealookat howtoinstallGCConCentOS7.GCCorGNUCompilerCollectionisreleasedbytheFreeSoftwareFoundationandasthenamesugg......
  • AI-数据标注的方法 制作自己的数据 labelstudio的使用(训练自己的数据-1)
    lablestudio 是采用web界面的方式 或者采用docker部署创建数据存储所需文件夹:首先在Ubuntu服务器本地创建一个将来用于上传与保存数据和标注结果的文件夹并赋予所有用户对于该文件夹的读写权限,便于之后的数据管理。例如:mkdir-p/sharespace/myDatasudochmod777/s......
  • __asm__ __volatile__ GCC的内嵌汇编语法 AT&T汇编语言语法 AT&T ASM Syntax
    1Overview 开发一个OS,尽管绝大部分代码只需要用C/C++等高级语言就可以了,但至少和硬件相关部分的代码需要使用汇编语言,另外,由于启动部分的代码有大小限制,使用精练的汇编可以缩小目标代码的Size。另外,对于某些需要被经常调用的代码,使用汇编来写可以提高性能。所以我们必须了解汇......
  • gcov - 标准c/c++代码覆盖率测试工具+lcov - GCC测试覆盖率的前端图形展示工具+gprof
    1、advent-calendar-of-circuits-2020-一个月每天用KiCad设计一个PCB项目GregoryDavill是来自澳大利亚的一个技术牛人,在开源硬件领域非常有名且活跃。他在2020年12月坚持每一天设计一个电路板,用KiCad完成电路设计到PCB的布局布线完成,这便是advent-calendar-of-circuits-......