Linux下pipe()未包含头文件却提示重名问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Linux下pipe()未包含头文件却提示重名问题

2016-06-03 00:42:46 2028 1

(C++)在Windows下可以正常工作的程序,在Linux下无法编译,提示类型未声明。但在此之前我已经声明了名为“pipe”的类,并且添加了构造器。经过查询得知pipe重名,但并未包含有“pipe”的头文件。请问各位大神能否给我一个解释?我的教练拒绝回答我。理由是他不喜欢C++!

#include <fstream>
#include <cstdlib>
using namespace std;
ifstream cin("bird.in");
ofstream cout("bird.out");
struct pipe
{
    int P;
    int L;
    int H;
    pipe(){P = L = H = -1;}
};

int up[10004] = {0},down[10004] = {0},n,m,k;
int nowx = 0,nowy = 0;
int point = 0;
int min_p = 50000;
int max_pipe = 0;
int cross = 0;
pipe Pi[10004];

int fly()           //检查下一位置可否飞越 
{
    if(nowx==n&&nowy>0)     //返回递归调用(到达终点) 
    {
        if(min_p>point) min_p = point;
        return 1;
    }
    int i;
    bool out = false;
    bool is_find = false;
    int back = 0;
    for(i = 1;!out;i++)         //点击 
    {
        nowy = nowy + up[nowx] * i;
        nowx++;
        point += i;
        if(nowy>=m) back = nowy - m,nowy = m,out = true;
        if(Pi[nowx].P != -1)   //下一个位置上有管道
        {
            if(Pi[nowx].L>=nowy||Pi[nowx].H<=nowy) //当前点击次数无法飞越
            {
                if(max_pipe<cross) max_pipe = cross;
                if(!out)
                { 
                    nowx--;                 //回溯 
                    nowy -= up[nowx] * i;   //回溯 
                }
                else
                {
                    nowx--;
                    nowy = nowy + back;
                    nowy = nowy - up[nowx] * i;
                }
                point -= i;             //回溯
                continue;      //下一次循环 
            } 
            else
            {
                cross++;
                int r = fly();    //检查下一位置
                if(r==1) is_find = true;
                cross--;
            }
        }

        else                     //下一个位置上无管道
        {
            int r = fly();       //检查下一位置 
            if(r==1) is_find = true;   //可以飞越 
            if(!out)
            { 
                nowx--;                 //回溯 
                nowy -= up[nowx] * i;   //回溯 
            }
            else
            {
                nowx--;
                nowy = nowy + back;
                nowy = nowy - up[nowx] * i;
            }
            point -= i;             //回溯
        }
    }

    nowy = nowy - down[nowx];              //不点击 
    if(nowy<=0)
    {
        nowy += down[nowx];
        if(is_find) return 1;
        return 0;
    }
    nowx++;
    if(Pi[nowx].P != -1)   //下一个位置上有管道
    {
        if(Pi[nowx].L>=nowy||Pi[nowx].H<=nowy) //下落无法飞越
        {
            if(max_pipe<cross) max_pipe = cross;
        } 
        else          
        {
            cross++;
            int r = fly();    //检查下一位置
            if(r==1) is_find = true;
            cross--;
        }
    }

    else                     //下一个位置上无管道
    {
        int r = fly();       //检查下一位置 
        if(r==1) is_find = true;   //可以飞越 
    }
    nowx--;
    nowy = nowy + down[nowx];
    if(is_find) return 1;
    return 0;
}

int main()
{
    int i;

    cin >> n >> m >> k;
    for(i = 0;i < n;i++)
        cin >> up[i] >> down[i];
    for(i = 0;i < k;i++)
    {
        int temp;
        cin >> temp;
        cin >> Pi[temp].L >> Pi[temp].H;
        Pi[temp].P = 1;
    }

    int ans = 0,temp = 0;
    for(i = 1;i <= m;i++)
    {
        nowx = 0;
        nowy = i;
        point = 0;
        temp = fly();
        if(temp == 1) ans = 1;
    }
    if(ans==0) cout << 0 << endl << max_pipe;
    else cout << 1 << endl << min_p;
    cin.close();
    cout.close();
    return 0;
取消 提交回答
全部回答(1)
  • 云栖技术
    2019-07-17 19:25:43

    pipe()是linux下面的一个函数,我猜是因为你用了pipe这个结构体导致名字重复了。

    建议将你的pipe结构体的名字改掉成其它的。

    0 0
相关问答

1

回答

在Linux中,FIFO文件是什么呀?

2022-04-01 22:31:56 384浏览量 回答数 1

1

回答

Linux apt命令中移除软件包及配置文件的命令是什么呢?

2021-12-04 15:41:37 106浏览量 回答数 1

1

回答

Linux中查找文件名中包含 test 的文件中不包含test 的行的操作命令是什么呢?

2021-12-01 15:23:55 124浏览量 回答数 1

1

回答

Linux的核心系统日志文件包括什么?

2021-12-01 20:02:51 110浏览量 回答数 1

1

回答

Linux shell怎么找出文件名结尾有空格的文件呢?

2021-12-02 13:20:54 152浏览量 回答数 1

1

回答

在Subversion中当查看当前工作区test.php文件与最新版本的差异时需要怎么做?

2021-10-26 18:58:24 165浏览量 回答数 1

0

回答

下载 php manager 安装包文件

2018-07-19 18:00:11 3684浏览量 回答数 0

2

回答

php 在阿里云用linux指令压缩zip文件失败

2017-03-23 20:03:22 2249浏览量 回答数 2

1

回答

linux下拆分文件产生大量的\0问题

2016-06-21 11:03:04 2146浏览量 回答数 1

5

回答

官方的linux一键安装包有问题

2014-10-22 10:43:20 9641浏览量 回答数 5
+关注
云栖技术
社区爱好者,专为云栖社区服务!
34
文章
897
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载