猿问

c++ gcc多文件链接出现undefined reference to怎么解决?

https://img2.mukewang.com/5cc12713000135e608000032.jpg

我想不是代码的错,试了用vc98可以编译,但是用gcc就不行,用gcc写其他链接还是这个问题。

我还把代码贴上来吧。

头文件.....................


ifndef SALES_H_INCLUDED

define SALES_H_INCLUDED

namespace SALES

{

    const int Q=4;

    struct Sales

    {

        double sales[Q];

        double average;

        double max;

        double min;

    };

    void setsales(Sales& s,const double ar[],int n);

    void setsales(Sales& s);

    void showsales(const Sales& s);

}



#endif // SALES_H_INCLUDED

源文件1.................................


#include<iostream>

#include"sales.h"


namespace SALES

{

    using namespace std;

    

    void setsales(Sales& s,const double ar[],int n)

    {

        double max=ar[0],min=ar[0],sum=ar[0];

        for(int i=1;i<n;i++)

        {

            if(ar[i]>max)

                max=ar[i];

            if(ar[i]<min)

                min=ar[i];

                sum+=ar[i];

        }

        s.max=max;

        s.min=min;

        s.average=sum/++n;

    }

    void setsales(Sales& s);

    void showsales(const Sales& s);

}

main源文件............................


include<iostream>

include"sales.h"

using namespace std;


int main()

{

    using namespace SALES;

    Sales m1,m2;

    double a[4]={1.1,2.2,3.3,4.4};

    setsales(m1,a,4);

}


守候你守候我
浏览 2205回答 4
4回答

忽然笑

VS2015的clang大部分兼容gcc,可以通过编译,楼上的知乎问题主要是template函数,函数声明与定义要在同一头文件下的。所以我个人认为是编译器问题吧

杨__羊羊

问题改过了?为什么我直接编译就过了环境:windows10rs1, msys2, g++6.2
随时随地看视频慕课网APP

相关分类

Java
我要回答