OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12378|回复: 9

函数的调用问题

[复制链接]

74

主题

209

帖子

0

精华

高级会员

Rank: 4

积分
919
金钱
919
注册时间
2012-1-14
在线时间
5 小时
发表于 2012-2-17 10:04:59 | 显示全部楼层 |阅读模式
void LCD_ShowString(u16 x,u16 y,const u8 *p)
{        
    while(*p!='\0')
    {      
        if(x>MAX_CHAR_POSX){x=0;y+=16;}
        if(y>MAX_CHAR_POSY){y=x=0;LCD_Clear(WHITE);}
        LCD_ShowChar(x,y,*p,16,0);
        x+=8;
        p++;
    } 
}

void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)

#if USE_HORIZONTAL==1
#define MAX_CHAR_POSX 312
#define MAX_CHAR_POSY 232
#else    
#define MAX_CHAR_POSX 232
#define MAX_CHAR_POSY 312
#endif
    u8 temp;
    u8 pos,t;
 u16 x0=x;
 u16 colortemp=POINT_COLOR;     
    if(x>MAX_CHAR_POSX||y>MAX_CHAR_POSY)  return;    
 //设置窗口    
 num=num-' ';//得到偏移后的值
 if(!mode) //非叠加方式

在执行到void LCD_ShowString(u16 x,u16 y,const u8 *p)时还没有进行宏定义 MAX_CHAR_POSX 和 MAX_CHAR_POSY  
  但是 为什么可以编写程序呢??
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-2-17 11:12:53 | 显示全部楼层
回复【楼主位】1126163471:
---------------------------------
大哥,你得好好学习C语言.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

74

主题

209

帖子

0

精华

高级会员

Rank: 4

积分
919
金钱
919
注册时间
2012-1-14
在线时间
5 小时
 楼主| 发表于 2012-2-17 13:29:18 | 显示全部楼层
原子哥,如果你在加上一句解决办法的话就更好了!!
回复 支持 反对

使用道具 举报

74

主题

209

帖子

0

精华

高级会员

Rank: 4

积分
919
金钱
919
注册时间
2012-1-14
在线时间
5 小时
 楼主| 发表于 2012-2-17 15:39:35 | 显示全部楼层
是不是和编译器有关呢????????
回复 支持 反对

使用道具 举报

74

主题

209

帖子

0

精华

高级会员

Rank: 4

积分
919
金钱
919
注册时间
2012-1-14
在线时间
5 小时
 楼主| 发表于 2012-2-17 16:11:31 | 显示全部楼层
原子哥我的猜想是:在编译的时候在头文件声明这个函数的时候已经处理这个宏定义了,是这样的 吗??????
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-2-17 16:16:31 | 显示全部楼层
回复【5楼】1126163471:
---------------------------------
我表示很纠结...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

74

主题

209

帖子

0

精华

高级会员

Rank: 4

积分
919
金钱
919
注册时间
2012-1-14
在线时间
5 小时
 楼主| 发表于 2012-2-17 16:35:10 | 显示全部楼层
原子哥  
我把这部分   #if USE_HORIZONTAL==1
                    #define MAX_CHAR_POSX 312
                     #define MAX_CHAR_POSY 232 
                     #else     
                    #define MAX_CHAR_POSX 232
                    #define MAX_CHAR_POSY 312
                   #endif
 从void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)提出来放到LCD。h里编译是可以的  而且在板子上的效果是一样的

原子哥我是很懂,求详解?
 
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-2-17 17:42:44 | 显示全部楼层
回复【7楼】1126163471:
---------------------------------
这种叫预编译.也就是在编译的时候就确定了的东西.
你这个地址放哪里都可以(在函数调用之前可以找到就可以.).
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

74

主题

209

帖子

0

精华

高级会员

Rank: 4

积分
919
金钱
919
注册时间
2012-1-14
在线时间
5 小时
 楼主| 发表于 2012-2-17 19:38:03 | 显示全部楼层
额,谢谢原子哥,我再看看!!!!!
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2115
金钱
2115
注册时间
2011-9-3
在线时间
121 小时
发表于 2012-2-17 22:04:31 | 显示全部楼层
右键点击找变量定义
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 21:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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