找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2392|回复: 9
收起左侧

关于C语言主副程序问题

[复制链接]
ID:371614 发表于 2020-2-17 20:35 | 显示全部楼层 |阅读模式
10黑币
两个.c文件,一个.h文件。我想在主程序里调用副程序的变量。不知道为什么总是提示定义了未调用的函数。个人猜测是我主副程序关联有误。请大神指点,我已经研究了一整天了
感谢,C语言程序已在附件里了。

问题程序.zip

1.36 KB, 下载次数: 11

最佳答案

查看完整内容

主函数需要调用的模块化编程的子函数要在Mydefine.h文件中声明,主函数需要调用的外部变量也要在Mydefine.h文件中声明并加关键字extern。文件已通过编译。
回复

使用道具 举报

ID:213173 发表于 2020-2-17 20:35 | 显示全部楼层
主函数需要调用的模块化编程的子函数要在Mydefine.h文件中声明,主函数需要调用的外部变量也要在Mydefine.h文件中声明并加关键字extern。文件已通过编译。 新建工程.zip (14.86 KB, 下载次数: 9)
回复

使用道具 举报

ID:592807 发表于 2020-2-18 08:28 | 显示全部楼层
副.c文件定义  int a;
主.c文件定义 extern int a;
就可以在主函数调用副函数的定义变量a了
回复

使用道具 举报

ID:94031 发表于 2020-2-18 08:46 | 显示全部楼层
这一句要屏蔽://#include<keypad.c> 已修改.rar (23.04 KB, 下载次数: 3)
回复

使用道具 举报

ID:168996 发表于 2020-2-18 09:09 | 显示全部楼层
错误是重复定义而非未定义
mydefine.h被2个.C包含,所以对于speed_hold.c来说,两次定义了 keypad(); Geykey();
我常用2个方法:
1. mydefine的仅用于keypad.c的定义,放到keypad.c, mydefine.h声明
extern uchar keypad();
extern uchar Geykey();
2. mydefine结构不变,包含文件分2组:
extern uchar keypad();
extern uchar Geykey();
uchar keypad();
uchar Geykey();
extern、非extern的用条件宏定义二选一,默认是extern,特定条件下非extern,在keypad、Geykey定义的所在.C加上符合特定条件的宏定义
回复

使用道具 举报

ID:462827 发表于 2020-2-18 09:15 | 显示全部楼层
你只上传这几个文件有何用?

要打包整个项目的文件才行,要看你的项目设置和主文件里有没有正确地包含头文件。
回复

使用道具 举报

ID:371614 发表于 2020-2-18 10:49 | 显示全部楼层
wulin 发表于 2020-2-17 20:35
主函数需要调用的模块化编程的子函数要在Mydefine.h文件中声明,主函数需要调用的外部变量也要在Mydefine.h ...

大佬,你这个分离主副程序我学到了。但我还有个问题想请教一下。
我想在主程序里调用副程序的变量speed,我在将主程序的m赋值去除,直接调用副程序的speed时候,报告错误,speed未定义

回复

使用道具 举报

ID:371614 发表于 2020-2-18 10:52 | 显示全部楼层
banalsheep 发表于 2020-2-18 09:09
错误是重复定义而非未定义
mydefine.h被2个.C包含,所以对于speed_hold.c来说,两次定义了 keypad(); Geyk ...

谢谢,我感觉我选的那个最佳的思路挺好用的,将头文件统一放到自定义的头文件里,然后直接调用自定义的,挺方便的,你可以看看
回复

使用道具 举报

ID:168996 发表于 2020-2-18 11:52 | 显示全部楼层
这种思路和我的1相同

真正的有利于团队协作的模块化设计,头文件非常重要(当然代码的规范同样重要)
建议你找一下类似ucosII的参考一下,可以借鉴到一些模块化设计的理念
回复

使用道具 举报

ID:371614 发表于 2020-2-20 19:01 | 显示全部楼层
黄youhui 发表于 2020-2-18 08:28
副.c文件定义  int a;
主.c文件定义 extern int a;
就可以在主函数调用副函数的定义变量a了

大佬,请教一下。我试过你的方法了,副.c全局变量,主.c外部参数。但他好像并未返回。是我程序有问题吗?
我想在主程序里调用副程序的变量speed
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表