Noris clark 2020-07-05 13:44 采纳率: 0%
浏览 1833
已采纳

C语言错误LNK112(一个无法解析的外部命令)

(最近的课设需要设计一个餐厅点菜的系统

在点菜的头文件和结算的头文件中我定义了一个全局变量extern int sum,并将其放在一个global的头文件里。

我打算是让这个变量可以储存点菜中的金额,并让其在结算中调用出来。)

麻烦大佬们帮我看下这个错误是怎么导致的

/*"global.h"的代码如下*/
extern int sum;
/*“点菜.h”如下*/
#include<stdlib.h>
#include<stdio.h>
#include"time.h"
#include"windows.h"
#include"string.h"

extern int sum;
void order()
{
    int i, sel;
    system("cls");

    printf("\t\t\t******************************************************\n");
    printf("\t\t\t******************************************************\n");
    printf("\t\t\t***************欢迎来到城科餐厅点餐功能***************\n");
    printf("\t\t\t******************************************************\n");
    printf("\t\t\t******************************************************\n");
    printf("\n\n\n");

    printf("\t\t\t******************************************************\n");
    printf("\t\t\t***************1 按菜名点餐           ****************\n");
    printf("\t\t\t***************2 退出点餐           ****************\n");
    printf("\t\t\t******************************************************\n");
    printf("\t\t\t请你输入你的选择(1-2):");
    scanf_s("%d", &sel);

    while (sel < 1 || sel>2)
    {
        printf("\t\t\t     输入错误,请你重新输入你的选择(1-2):");
        scanf_s("%d", &sel);
    }

    switch (sel)
    {
    case 1:
    {
        char order_cm[30];
        int flag, x;
        printf("\t\t\t请你输入你所要点餐的菜名:");
        scanf_s("%s", &order_cm);
        //把输入的菜名和所有菜品的菜名进行比对,是否相等,如果相等则输出
        flag = 0; //0表没有找到
        for (i = 0; i <= 39; i++)
        {
            if (order_cm == soft[i].cm)
            {
                flag = 1;//1表示找到了
                sum += soft[i].price;
                for (x = 1; x <= 103; x++)
                    printf("-");
                printf("\n");

                printf("|");
                printf("%-9s", "菜名");
                printf("|");
                printf("%-9s", "菜品类型");
                printf("|");
                printf("%-9s", "价格");
                printf("|");
                printf("\n");

                for (x = 1; x <= 103; x++)
                    printf("-");
                printf("\n");

                printf("|");
                printf("%-9d", soft[i].cm);
                printf("|");
                printf("%-9d", soft[i].lx);
                printf("|");
                printf("%-9d", soft[i].price);
                printf("|");
                printf("\n");

                for (x = 1; x <= 103; x++)
                    printf("-");
                printf("\n");

                break;
            }
        }
        if (flag == 0)
            printf("\t\t\t查无此菜品!!!\n");

        system("pause");

        order();//点餐以后继续点餐
    }
    break;
    case 2:
        break;
    }
}
/*"结算.h"如下
#include<stdlib.h>
#include<stdio.h>
#include"time.h"
#include"windows.h"
#include"string.h"

extern int sum;

void billpay()
{
    system("cls");

    printf("\t\t\t******************************************************\n");
    printf("\t\t\t******************************************************\n");
    printf("\t\t\t***************欢迎来到城科餐厅结算功能***************\n");
    printf("\t\t\t******************************************************\n");
    printf("\t\t\t******************************************************\n");
    printf("\n\n\n");

    printf("\t\t\t******************************************************\n");
    printf("\t\t\t********您需支付%d元**********\n",&sum);

    system("pause");
}
  • 写回答

1条回答 默认 最新

  • SFAfreshman 2020-07-05 17:57
    关注

    你extern 变量使用有问题,只有声明,没有定义
    而且sum += soft[i].price;前没初始化变量过

    gobal.h那里改成extern int a =0 ;试试
    再不行的话把gobal.h改成gobal.c试试

    帮到你的话采纳一下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 绿盟安全扫描--检测到目标站点存在javascript框架库漏洞
  • ¥30 Android STD快速启动
  • ¥15 如何使用simulink建立一个永磁同步直线电机模型?
  • ¥30 天体光谱图的的绘制并得到星表
  • ¥15 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包