单片机/MCU论坛
直播中

土老冒

11年用户 92经验值
擅长:可编程逻辑 电源/新能源 测量仪表 控制/MCU
私信 关注
[问答]

在一段程序的开始位置已经使用#define定义过一个变量的类型,但是在函数中却不被认可,这是啥原因啊

是这样的:在用C51编一个小的测试程序,在程序的开始位置上已经用了#define uchar unsigend char定义了类型,但是在进行错误检查时,函数中定义变量如果采用了 uchar x就会报错,只有在mian()中可以使用,这是什么原因?还请那位前辈指点一二,在此不胜感谢。
#include"D:KeilC51INCSTCSTC12C5A60S2.H"
#include
***it Max7221CS  = P2^1;
***it Max7221DIN = P2^0;
***it Max7221CLK = P2^2;
#define uchar unsigned char;
#define uint unsigned int;
unsigned char DisplayBuffer[8]={2,0,1,0,10,2,10,9};//显示的数字,数字为10的时候显示“-”
/*********************************************************************
                              延时函数
**********************************************************************/
void delayms(unsigned int x)
{
        uchar i;
        while(x--)
        {
                for (i=0;i<120;i++);
        }
}
在定义延时函数名时也是这样,如果括号里改用了 uint x也会报错,只有用完整的定义才能通过

回帖(3)

阿信509

2021-8-14 17:29:09

最佳答案

#define uchar unsigned char;
#define uint unsigned int;
这两句话后面的分号去掉试试
举报

黄忠

2021-8-17 11:29:05
你要用 typedef 来定义
举报

郭帅客

2021-9-4 16:02:30
把宏定义放在.h文件,用的时候包含这个头文件就好了
1 举报
  • 土老冒: 确实是个好方法,在这个问题发表了之后也在现实里请教了前辈,这位前辈也是建议用一个通用的同文件把所有的定义都放在里面统一加载。谢谢你

更多回帖

发帖
×
20
完善资料,
赚取积分