首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请教宏定义的问题

请教宏定义的问题

#define __dsPIC30F6014__
// #include<p30f6014>


#include <uart.h>
#include <adc12.h>
#include <p30F6014.h>

第一句什么意思?是吧__dsPIC30F6014__定义为空么?也就是出现__dsPIC30F6014__的地方都去掉?

#ifndef _STDIO_H_

#define _STDIO_H_

这几句又是什么意思?_STDIO_H_是指stdio.h么?为什么要这样写?作用难道是出现stdio.h的地方都去掉?可不可以把_STDIO_H_用stdio.h替代掉?

还有,__dsPIC30F6014__为什么前后要加两个下划线?只加一个行不行?不加行不行?

调试的时候有用,比如

#ifndef __dsPIC30F6014__

test = 1;

#else

test = 2;

#endif

第二个问题其实跟第一个差不多,就是一个哨兵,在编译的时候其作用,预防重复定义。

[此贴子已经被作者于2008-8-17 10:27:02编辑过]

#ifdef WINDOWS
#define MYTYPE long
#else
#define MYTYPE float
#endif


如果在Windows上编译程序,则可以在程序的开始加上
#define WINDOWS


这样则编译下面的命令行:
#define MYTYPE long


如果在这组条件编译命令之前曾出现以下命令行:
#define WINDOWS 0


则预编译后程序中的MYTYPE都用float代替。

以上是我在网上查到的,但有些不明白,为什么#define WINDOWS 0的时候会执行后面一段?也就是认为WINDOWS没有被定义?#define WINDOWS 和#define WINDOWS 0有什么区别?后面加个0和不加有什么含义?

[此贴子已经被作者于2008-8-17 10:36:27编辑过]

实际写了一小段测试了一下,#define WINDOWS 0执行的是上面那段程序。

也就是说,只要有#define WINDOWS **,不管**是什么,或者是空的,也表示已经定义了?

高手再来解答一下啊

[em04][em04]
对,用了#define后,后面可以不接参数,就表示已经定义过了。
海纳百川  有容乃大
谢谢
返回列表