| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1368 人关注过本帖
标题:C Primer Plus中文第六版,第12章内存类别/链接和内存管理中的掷骰子程序, ...
只看楼主 加入收藏
BCCN_cuser
Rank: 1
等 级:新手上路
帖 子:31
专家分:1
注 册:2016-6-28
结帖率:100%
收藏
 问题点数:0 回复次数:0 
C Primer Plus中文第六版,第12章内存类别/链接和内存管理中的掷骰子程序,如何将分开的几个程序翻译单元编译成功的。
C Primer Plus中文第六版,第12章内存类别/链接和内存管理中的掷骰子程序,如何将分开的几个翻译单元编译成功的。我是这么做的,在同一个文件夹中放置这几个程序,是然后编译程序12.1,但是编译显示12.1.cpp:(.text+0xc1): undefined reference to `roll_n_dice(int, int)'/12.1.cpp:(.text+0x12f): undefined reference to `roll_count'/[Error] ld returned 1 exit status。要怎么做才能编译成功,另麻烦推荐一下上机指导用书。
12.1程序如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include"diceroll.h"
int main(void)
{
    int dice,roll;
    int sides;
    int status;
    srand((unsigned int ) time(0));
    printf("Enter the number of sides per die, 0 to stop.\n");
    while((scanf("%d",&sides)==1&&sides>0))
    {
        printf("How many dice?\n");
        if((status=scanf("%d",&dice))!=1)
        {
            if(status=EOF)
            break;
            else
            {
                printf("You should have entered an integer.");
                printf("Let's begin again.\n");
                while(getchar()!='\n')
                continue;
                printf("How many sides? Enter 0 to stop.\n" );
                continue;
               
             }
            
        }
        roll=roll_n_dice(dice,sides);
        printf("You have rolled a %d using %d %d-sided dice.\n",roll,dice,sides);
        printf("How many sides? Enter 0 to stop.\n");
        
    }
    printf("The rollen() function was called %d times.\n",roll_count);
    printf("GOOD FORTUNE TO YOU!\n");
    return 0;
}


diceroll.h头文件(另存为头文件)
//diceroll.h
extern int roll_count;

int roll_n_dice(int dice,int sides);

12.2文件:
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    double *ptd;
    int max;
    int number;
    int i=0;
    puts("What is the maximum number of type double entries?");
    if(scanf("%d",&max)!=1)
    {
        puts("Number not correctly entered -- bye.");
        exit(EXIT_FAILURE);
    }
    ptd=(double *) malloc(max *sizeof(double));
    if(ptd==NULL)
    {
        puts("Memory allocation failed. Goodbye.");
        exit(EXIT_FAILURE);
    }
    puts("Enter the values (q to quit):");
    while(i<max)
    {
        scanf("lf",&ptd[i]);
        ++i;
    }
      
    printf("Here are your %d entries:\n",number=i);
    for(i=0;i<number;i++)
    {
        printf("%7.2f",ptd[i]);
        if(i%7==6)
        putchar('\n');
        
    }
    if(i%7!=0)
    putchar('\n');
    puts("Done.");
    free(ptd);
    return 0;
}
搜索更多相关主题的帖子: undefined reference include status 文件夹 
2016-11-14 23:10
快速回复:C Primer Plus中文第六版,第12章内存类别/链接和内存管理中的掷骰子程 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016797 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved