找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1111|回复: 6
打印 上一主题 下一主题
收起左侧

请问大家一个关于写C语言main函数的问题

[复制链接]
跳转到指定楼层
楼主
ID:691676 发表于 2020-3-20 22:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  看到一个程序,在main函数之后是很正常的初始化,但这之前怎么又是void KeyScan();如图上红色标注的这些,这些子函数程序后面已经写了,为什么前面还要再调用#include "STC15.H"
#include "oled.h"
#include "ds18b20.h"

#define ADC_POWER   0x80            //ADC电源控制位
#define ADC_FLAG    0x10            //ADC完成标志
#define ADC_START   0x08            //ADC起始控制位
#define ADC_SPEEDLL 0x00            //540个时钟

sbit LEDG = P5^5;
sbit BUZZ = P1^3;
sbit RELAY = P3^7;  //0开1关

//定义按键IO
sbit KEY1 = P3^6;
sbit KEY2 = P3^3;
sbit KEY3 = P3^2;

//按键码,为0时没有键按下
char KeyCode = 0;
//水位百分比,分0%-20%-40%-60%-80%-100%
int WaterLev = 0;     
//设置的水温
int TempSet = 300;   

int Flag1s = 0;
int FlagBuzz = 0;

void Timer0Init();
void KeyScan();
void KeyAction();
void STC15AdcInit(uchar ch);
void STC15AdcStart(uchar ch);

void main()
{
    OledInit();
        OledShowStr(32, 0, "Temp Box");
    OledShowStr(0, 2, "Temperature:");
    OledShowStr(0, 4, "Water Level:");
    OledShowStr(24, 6,   "Set Temp:");
    OledShowTemp(96, 6, TempSet);
    Start18B20();
    STC15AdcInit(5);
    STC15AdcStart(5);
    Timer0Init();


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

来自 7#
ID:713525 发表于 2020-3-22 18:23 | 只看该作者
但这之前怎么又是void KeyScan();如图上红色标注的这些,这些子函数程序后面已经写了,为什么前面还要再调用
---那些红色部分不是调用,是声明。按语法规则,有如下两种情况需声明:
   1、若其它文件的函数要被本文件调用,需事先声明
   2、若本文件内的函数想要被行号小于自己的函数调用,需要在调用之前事先声明
回复

使用道具 举报

沙发
ID:452950 发表于 2020-3-20 23:12 | 只看该作者
子函数放在主函数前面,就不用再声明一遍,子函数放在主函数后面,就需要在主函数前面声明函数名。
你可以把void main()(xxx)挪到整个main.c的最后面,就可以删掉红色部分了。
回复

使用道具 举报

板凳
ID:235200 发表于 2020-3-20 23:44 | 只看该作者
这个叫做函数声明;主要作用是帮助编译系统找到这些函数的位置;因为这些函数放在main()函数后,是由main()函数调用执行,如果不声明,main()函数不知道。另一种做法是把main()函数移至最后,就不需要这样声明了
回复

使用道具 举报

地板
ID:524818 发表于 2020-3-21 08:32 | 只看该作者
#include "STC15.H"是头文件,必须有的,红色的那些是子函数,是需要提前声明的
回复

使用道具 举报

5#
ID:612392 发表于 2020-3-21 15:25 | 只看该作者
C语言基础太薄弱,建议认真看一下
回复

使用道具 举报

6#
ID:420836 发表于 2020-3-22 01:50 | 只看该作者
你将所有子例程放在main函数后面,因此需要在main函数之前声明它们,以避免编译错误。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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