打印

刚才看了 computer00 的 AT89C51snd Initial.h文件

[复制链接]
1841|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
88088|  楼主 | 2007-11-7 22:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

有些不明白
问题1: 我知道ifndef的意思是 如果没有定义
            define就定义的意思
这些是关于条件编译的东西,但是问题不是在这里
我还没有明白 下面这个横杆__是啥意思?
__INITIAL_h__ 是啥意思?  为什么要写着__INITIAL_h__ ?

问题2:
我知道 如果#define PI 3.14
意思就是PI=3.14 使用PI的时候就当作3.14使用
&是逐位与的意思 |是逐或的意思
但是问题不是在这里

下面set_ERAM() 是一个函数么?
set_XRAM() 和 AUXR=AUXR|0x02 之间有什么联系啊?

希望各位能帮助我解答



/************************************************************************************
  本程序仅供广大电子爱好者制作MP3学习和参考使用,不得用于其它用途,否则后果自负

   Initial.h file
   Created by Computer-lov. Date: 2005.3.19
   Last edited date: 2005.5.31
   version 1.1
   Copyright (c) 2005 Computer-lov
   All rigths reserved
*************************************************************************************/

#ifndef __INITIAL_h__
#define __INITIAL_h__

#define set_ERAM() AUXR=AUXR&0xFD   //使用内部扩展RAM
#define set_XRAM() AUXR=AUXR|0x02   //使用外部RAM

相关帖子

沙发
kelewang| | 2007-11-7 22:45 | 只看该作者

看来是初学者

#define set_ERAM() AUXR=AUXR&0xFD   //使用内部扩展RAM
这是个宏定义,和你知道的#define PI 3.14是一个道理

使用特权

评论回复
板凳
kelewang| | 2007-11-7 22:57 | 只看该作者

横杠

至于为什么要加下划线,我倒是没有深究过,
我想应该是一种惯例吧,反正我看到的头文件里都是这样的,就像库函数一般都是下划线开头的。

使用特权

评论回复
地板
88088|  楼主 | 2007-11-7 23:06 | 只看该作者

//

set_ERAM() 是一个什么的东西啊?
函数 还是 变量?

set_ERAM 后面多了个() 
我脑子就不能转弯拉

set_XRAM() 和 AUXR=AUXR|0x02 之间有什么联系啊?

谢谢 大家的指点

使用特权

评论回复
5
sodwell| | 2007-11-7 23:18 | 只看该作者

re

看来还是C语言的初学者,你要的答案在书上都找得到..

使用特权

评论回复
6
ayb_ice| | 2007-11-8 08:12 | 只看该作者

宏就是替换

宏可以程序更具可读性,方便修改,减少出错的可能,可以提高程序执行速度。。。

使用特权

评论回复
7
88088|  楼主 | 2007-11-8 17:29 | 只看该作者

使用特权

评论回复
8
88088|  楼主 | 2007-11-9 16:18 | 只看该作者

问题还没有解决

使用特权

评论回复
9
88088|  楼主 | 2007-11-10 00:27 | 只看该作者

问题还没有解决。

使用特权

评论回复
10
88088|  楼主 | 2007-11-10 11:57 | 只看该作者

问题还没有解决,不能沉

使用特权

评论回复
11
古道热肠| | 2007-11-10 12:24 | 只看该作者

建议好好看看书

  C语言教材中有详细的介绍。
set_ERAM() 也是一个名字,写成这样更形象些,和张三,李四是一样的。
主程序中用到set_ERAM()时,就用定义的内容替换,等同于执行了AUXR=AUXR&0xFD的语句。
变量以下划线开头也是一样的,起这个名字更有意义些吧了,换成其它的也一样的用。

使用特权

评论回复
12
wxj1952| | 2007-11-10 12:27 | 只看该作者

菜鸟回答

set_ERAM() 是宏函数,中间横杠是因为有set_DRAM(),
set_ERAM(), set_XRAM() 以便区分。

使用特权

评论回复
13
88088|  楼主 | 2007-11-11 00:33 | 只看该作者

第一个问题还没有解决,不能沉底

使用特权

评论回复
14
hotpower| | 2007-11-11 01:46 | 只看该作者

等00讨饭回来在说~~~

使用特权

评论回复
15
happystar| | 2007-11-11 11:02 | 只看该作者

re

问题1: 我知道ifndef的意思是 如果没有定义
            define就定义的意思
这些是关于条件编译的东西,但是问题不是在这里
我还没有明白 下面这个横杆__是啥意思?
__INITIAL_h__ 是啥意思?  为什么要写着__INITIAL_h__ ?

re;这个下杠不代表什么意思的,目的只是作成和标准的C头文件一样的,
#ifndef __INITIAL_h__
#define __INITIAL_h__表示给这个头文件起一个名字。你也可以不写或换成别的名字的。(这些都是按照标准C头文件写的)

问题2:

下面set_ERAM() 是一个函数么?
set_XRAM() 和 AUXR=AUXR|0x02 之间有什么联系啊?
re: set_XRAM() 也只是一个宏定义的名字。 set_XRAM() 也可以随便你写成set_XRAM什么的。
其实这些都能在C语言书上的知识。不是大家不愿意回答你,是你太懒了

使用特权

评论回复
16
computer00| | 2007-11-11 11:55 | 只看该作者

加横杠是一种习惯吧,把文件名代进去就行了。

set_XRAM() 也是个宏定义,看起来像个函数而已。在编译时,会用AUXR=AUXR|0x02去代替set_XRAM()。

使用特权

评论回复
17
uranus0903| | 2007-11-12 16:26 | 只看该作者

#ifndef __INITIAL_h__

#ifndef __INITIAL_h__
#define __INITIAL_h__
是为了防止重复定义!!!我都读成,如果没定义 (#ifndef)__INITIAL_h__,定义(#define )__INITIAL_h__

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

102

帖子

1

粉丝