发新帖我要提问
12
返回列表
打印

lz,请自己去白度搜索这个**,AVR c语言优秀编程风格

[复制链接]
楼主: 已注册
手机看帖
扫描二维码
随时随地手机跟帖
21
已注册|  楼主 | 2007-9-25 08:12 | 只看该作者 回帖奖励 |倒序浏览

我在13楼的问题谁帮我看看哦?

使用特权

评论回复
22
zhh124| | 2007-9-25 12:58 | 只看该作者

这样写看看


A.C 里包含函数本身

void xyz(void)
{
...
}

A.H里申明函数原型
void xyz(void);

main.c里包含A.H
#include "A.H"

main()
{
   ...
   xyz();
   ...
}

使用特权

评论回复
23
已注册|  楼主 | 2007-9-25 14:10 | 只看该作者

谢谢LS

下面的这个问题是因为什么?



已注册 发表于 2007-9-24 14:08 侃单片机 ←返回版面    

13楼: 请问对于下面的函数怎么写? 


void        x3(adr,val)
uint        adr;
uchar       val;
{
adr=val*10;
}

此时我按照下面的写法,编译时也报错.
extern   void x3(uint adr,uchar val);



但如果把函数定义成:
void        x3(uint adr,uchar val)
{
adr=val*10;
}
则写成extern  void x3(uint adr,uchar val);就可以编译通过.
 
 

使用特权

评论回复
24
已注册|  楼主 | 2007-9-25 14:13 | 只看该作者

对于下面的这个定义又如何理解?

#ifndef _UNIT_H__
#define _UNIT_H__ 1  
//100us
extern void Delay100us(uint8 n);
//1s
extern void Delay1s(uint16 n); //  n <= 6 ,when n==7, it is 1. 
//1ms
extern void Delay1ms(uint16 n);

#endif


下面的是什么意思?
#ifndef TRUE
#define TRUE  1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef NULL
#define NULL 0
#endif

使用特权

评论回复
25
已注册|  楼主 | 2007-9-25 14:15 | 只看该作者

还看到一个这样的定义


//-------------------------------------------------------------
//#define     LEDheadCOM      0             
//#define     LEDheadCOM      1             //选择LED极性
//-------------------------------------------------------------
#ifdef      LEDheadCOM
//LED极性为共阳
__root __flash const uchar dis[10]={};
#else
//LED极性为共阴
__root __flash const uchar dis[10]={};
#endif
//--------------------------------------------------------------

#ifdef和#ifndef的区别是什么?

使用特权

评论回复
26
ayb_ice| | 2007-9-25 14:40 | 只看该作者

不是有种方法可以吗,非要钻牛角尖。。。

要钻自己试一下就知道了,什么东西都要现成的,你还能学到什么。。。

使用特权

评论回复
27
已注册|  楼主 | 2007-9-25 15:05 | 只看该作者

请LS赐教

你给的方法是可以通过编译,但我在实际操作中遇到了另一个具体情况,我也想自己看书搞定啊,所以请大家帮我推荐一本啊。


我并没有想吃白食哦……

BBS很少人讨论这几个概念哦,翻帖子么知道。

使用特权

评论回复
28
cheungman| | 2007-9-26 07:55 | 只看该作者

re

先抢个位置

使用特权

评论回复
29
wenbinjj| | 2007-9-26 09:29 | 只看该作者

宏的问题

只包含一次的:
有一头文件 A.h

#ifndef __A_H__
#define __A_H__
//这里写文件内容
#endif

都是宏来的,使用宏可以有很爽。
建议去看下宏。。。。

使用特权

评论回复
30
123654789| | 2007-9-26 09:47 | 只看该作者

让 我来 培养 下一 代 拉

下面的是什么意思?
#ifndef TRUE
#define TRUE  1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef NULL
#define NULL 0
#endif



已注册  给个方向 你

去 查查 条件编译 


条件编译 


条件编译 


条件编译 

条件编译 

使用特权

评论回复
31
原野之狼| | 2007-9-26 10:01 | 只看该作者

你用VC见一个MFC工程,然后看看别人是怎么个结构。。。

使用特权

评论回复
32
已注册|  楼主 | 2007-9-26 10:25 | 只看该作者

问LS两位

我看了,但没看懂,还在看,顺便问。
1:
#ifndef TRUE
#define TRUE  1
#endif
上面的这段是不是可以这样理解?
如果TRUE是没有定义的宏,则定义宏TRUE--》1


2:
只包含一次的:
有一头文件 A.h

#ifndef __A_H__
#define __A_H__
//这里写文件内容
#endif
 
这段怎么理解?怎么把A.h加入编译?
#define __A_H__后面也没有什么东西,那他下面的文件内容能编译吗?

使用特权

评论回复
33
已注册|  楼主 | 2007-9-26 10:37 | 只看该作者

看了一本

基本明白了.




另外下面的这个问题还没找到答案:
已注册 发表于 2007-9-24 14:08 侃单片机 ←返回版面    

13楼: 请问对于下面的函数怎么写? 


void        x3(adr,val)
uint        adr;
uchar       val;
{
adr=val*10;
}

此时我按照下面的写法,编译时也报错.
extern   void x3(uint adr,uchar val);



但如果把函数定义成:
void        x3(uint adr,uchar val)
{
adr=val*10;
}
则写成extern  void x3(uint adr,uchar val);就可以编译通过.

使用特权

评论回复
34
已注册|  楼主 | 2007-9-26 11:07 | 只看该作者

to wenbinjj

 wenbinjj 发表于 2007-9-26 09:29 侃单片机 ←返回版面    

29楼: 宏的问题 

只包含一次的:
有一头文件 A.h

#ifndef __A_H__
#define __A_H__
//这里写文件内容
#endif
 
 
这样理解对不对?
如果文件为A.h
文件内容为:
#ifndef __A_H__
#define __A_H__
//这里写文件内容
#endif

当在别的文件中包含A.h后,如果开始没有定义__A_H_则第一次会把这个文件包含进去编译,但因为#define __A_H__,在第二次就不会把这个文件包含进去了。

同样,这样写也可以达到一样的效果:

#ifdef  __A_H__
#undef  __A_H__
//这里写文件内容
#endif


感谢在本贴中给予我帮助的人……

但对123654789表示一下鄙视……

使用特权

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

本版积分规则