c++ - 在 C++ 中对扫描的 undefined reference ?

标签 c++

<分区>

这是我的代码...我有二维矩阵 A、B。我想开发A和B的产品。

#include <stdio.h>
    #include <stdlib.h>

    int main(int argc, char *argv[])
    {

    int scan();
    int multiply();
    int print();

    int metxa[3][4],metxb[4][3],resut[3][3];

    int main();
    {
    scan();
    multiply();
    print();
    return 0;
    }
    int scan();
    {
    int i;
    for(i=0;i<3;i++)
    {
    scanf("%d %d %d %d",&metxa[i][0],&metxa[i][1],&metxa[i][2],&metxa[i][3]);
    }
    for(i=0;i<4;i++)
    {
    scanf("%d %d %d",&metxb[i][0],&metxb[i][1],&metxb[i][2]);
    }
    }
    int multiply();
    {
    int i,j;
    for(i=0;i<3;i++)
    {
    for(j=0;j<3;j++)
    {
    resut[i][j]=metxa[i][0]*metxb[0][j]+metxa[i][1]*metxb[1][j]+metxa[i][2]*metxb[2][j]+metxa[i][3]*metxb[3][j];

    }
    }
    }
    int print();
    {
    int i,j;
    for(i=0;i<3;i++)
    {
    for(j=0;j<3;j++)
    {
    printf("%d\t",resut[i][j]);
    }
    printf("\n");
    }
    }
    system("PAUSE");
    return 0;
    }

但是我得到链接器错误 - 未定义对扫描和乘法方法的引用...为什么我会得到这个错误?

最佳答案

定义时函数名后的分号:

int scan();
{
    ...
}

应该是:

int scan()
{
    ...
}

multiply()print() 函数也是如此。

还有:

  • scan()multiply()print() 都没有返回值,但它们的返回值为 int.
  • scan()multiply()print() 并在 main() 中声明和定义.

这是可编译状态下的已发布代码(我不声明其正确性):

#include <stdio.h>
#include <stdlib.h>

void scan();
void multiply();
void print();

int metxa[3][4],metxb[4][3],resut[3][3];

int main(int argc, char *argv[])
{
    scan();
    multiply();
    print();
    system("PAUSE");

    return 0;
}

void scan()
{
    int i;
    for(i=0;i<3;i++)
    {
        scanf("%d %d %d %d",
              &metxa[i][0],
              &metxa[i][1],
              &metxa[i][2],
              &metxa[i][3]);
    }
    for(i=0;i<4;i++)
    {
        scanf("%d %d %d",
              &metxb[i][0],
              &metxb[i][1],
              &metxb[i][2]);
    }
}

void multiply()
{
    int i,j;
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            resut[i][j] = metxa[i][0]*
                          metxb[0][j]+metxa[i][1]*
                          metxb[1][j]+metxa[i][2]*
                          metxb[2][j]+metxa[i][3]*
                          metxb[3][j];
        }
    }
}

void print()
{
    int i,j;
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            printf("%d\t",resut[i][j]);
        }
        printf("\n");
    }
}

关于c++ - 在 C++ 中对扫描的 undefined reference ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8794760/

相关文章:

c# - QuantLib-SWIG 功能是否完整?

c++ - std::vector<float> 成员的 boost 序列化/反序列化失败

c++ - 仅为具有 operator/defined 的此类 T 创建模板 <T>

C++ std::function 运算符=

c++ - 如何在 C++ 中显示 2D RGB 矩阵的图像

c++ - 如何使用Enterprise Architect(EA)生成QT项目的类图?

c++ - 二叉树节点子节点的高效选择

c++ - 对象构造 : default parameter vs delegation

c++ - 'if' 带有模板参数或 SFINAE 是首选?

c++ - 类模板的模板参数列表中的类型/值不匹配