| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1711 人关注过本帖, 1 人收藏
标题:文件包含 返回结构类型函数 错误
只看楼主 加入收藏
ouyangshit
Rank: 3Rank: 3
来 自:China
等 级:论坛游侠
帖 子:155
专家分:107
注 册:2014-10-25
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:34 
文件包含 返回结构类型函数 错误
图片附件: 游客没有浏览图片的权限,请 登录注册
2015-01-03 15:00
ouyangshit
Rank: 3Rank: 3
来 自:China
等 级:论坛游侠
帖 子:155
专家分:107
注 册:2014-10-25
收藏
得分:0 
求各位大虾指教!
2015-01-03 15:02
ouyangshit
Rank: 3Rank: 3
来 自:China
等 级:论坛游侠
帖 子:155
专家分:107
注 册:2014-10-25
收藏
得分:0 
如果把结构定义放到main上面,那报错更吓人。
学的课本上面这部分讲的很少,自己做文件包含的程序遇到的问题。
就把问题简化成这样。

各位大虾能给点提示吗
2015-01-03 15:05
ouyangshit
Rank: 3Rank: 3
来 自:China
等 级:论坛游侠
帖 子:155
专家分:107
注 册:2014-10-25
收藏
得分:0 
自己试过返回void和int型的函数,能行,
就结构类型的十分别捏,搞不明白。
网上搜过,论坛找过。没有找到想要的答案。
2015-01-03 15:07
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你这样整个写法和用法都成问题。我曾经发过返回结构体数据的代码。

授人以渔,不授人以鱼。
2015-01-03 15:09
ouyangshit
Rank: 3Rank: 3
来 自:China
等 级:论坛游侠
帖 子:155
专家分:107
注 册:2014-10-25
收藏
得分:0 
回复 5楼 TonyDeng
版版有链接吗
2015-01-03 15:10
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
程序代码:
/*
http://bbs.bccn.net/thread-439278-1-1.html

问题:我有16个地址从0xE0到0xFE,我想通过一个条件判断哪些地址是可用的,哪些是不可用的,可用的地址为1,不可用
的为0,例如,通过判断只有0xE0和0xFe可用,那么应该得到1000000000000001,然后可以作为返回值使用
*/

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

/*
地址状态数据结构:
    nAddress  -- 地址偏移量
    strStatus -- 所有地址的状态值字符串
注:为适应不确定数目的地址,此处设计为用动态分配内存方式生成字符串strStatus。若希望回避动态分配内存,可设定strStatus为
    足够大的数组,比如char strStatus[16]这样的,不需留结束符,有效的地址数目由nAddress值决定
*/
struct Status
{
    size_t nAddress;
    char*  strStatus;
};

void Pause(void);
Status SetStatus(const char* strStatus);

int main(void)
{
    Status theStatus = SetStatus("1000000000000001");
    for (size_t index = 0; index < theStatus.nAddress; ++index)
    {
        printf_s("0x%02X = %1d\n", 0xE0 + index, theStatus.strStatus[index]);
    }
    delete [] theStatus.strStatus;

    Pause();
    return EXIT_SUCCESS;
}

void Pause(void)
{
    printf_s("\nPress any key to continue...");
    _getch();
}

// 重点:看明白这个函数是怎么生成状态字符串的并返回的,即知如何应用到自己的程序中
Status SetStatus(const char* strStatus)
{
    Status retStatus;
    retStatus.nAddress = strlen(strStatus);
    retStatus.strStatus = new char[retStatus.nAddress];

    for (size_t index = 0; index < retStatus.nAddress; ++index)
    {
        // 每个地址的状态以数值0和1表示
        retStatus.strStatus[index] = strStatus[index] - '0';
    }

    return retStatus;
}



授人以渔,不授人以鱼。
2015-01-03 15:13
ouyangshit
Rank: 3Rank: 3
来 自:China
等 级:论坛游侠
帖 子:155
专家分:107
注 册:2014-10-25
收藏
得分:0 
回复 7楼 TonyDeng
版版,在一个.c文件里面我会用。
图片附件: 游客没有浏览图片的权限,请 登录注册

版版,冒昧的问一下。
是我智商捉鸡没理解您的指导,还是您没看清我的需求?
2015-01-03 15:31
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
从你#include ".c"就知道整个都是错的。编译的信息是类型不兼容,说明编译器识别你的代码,是有另外一个不同返回值类型的函数隐藏存在,他用了那个,而不是你写的那个。

授人以渔,不授人以鱼。
2015-01-03 15:34
ouyangshit
Rank: 3Rank: 3
来 自:China
等 级:论坛游侠
帖 子:155
专家分:107
注 册:2014-10-25
收藏
得分:0 
在一个.c里面调用另一个.c里的 返回结构类型的函数。
我自己在一个.c里面会用。
介于某些程序代码内容比较多,通过文件包含会比较条例清晰。
可是用#include""文件包含的时候就出现诸多错误。
自己搞不明白。求教。
2015-01-03 15:34
快速回复:文件包含 返回结构类型函数 错误
数据加载中...
 
   



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

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