文号
t58920
阅读
7124
回复
14
收藏
5
请教一个c51多文件问题
2013/07/25
IP:北京
c51
一个工程多个。c文件
问题:
typedef
#define
全局变量
这些语句应该放在那里
13年5个月前IP:未同步
551920
1楼
一个.c文件对应一个.h,
哪个.c用到的宏定义写在相应的.h里,.h包含在相应的.c里。
全局的可以写在globle.h或者system.h里。
引用
评论
1176764177作者
13年5个月前IP:未同步
551924
2楼
回 1楼(xusixteen) 的帖子
typedef
是每个文件都要用到我试过放在一个头文件每个调用一次后果就是一堆错误说我重复定义
引用
评论
13年5个月前IP:未同步
551929
3楼
一个用typedef,其他extern 呢?
引用
评论
1176764177作者
13年5个月前IP:未同步
551950
4楼
回 3楼(xusixteen) 的帖子
所有unsigned char 都换成u8
unsigned int u16
unsigned long u32
用typedef
作用范围是整个工程怎么办
引用
评论
13年5个月前IP:未同步
551975
5楼
在globle.h里
typedef unsigned char u8
typedef unsigned int u16
typedef unsigned long u32
其他.c里#include “globle.h”
引用
评论
13年5个月前IP:未同步
551978
6楼
#ifndef  xxx
#define  xxx
引用
评论
13年5个月前IP:未同步
552008
7楼
回 楼主(1176764177) 的帖子
这些是C语言的基础问题
在同一个被编译的项目中,不能出现名称完全一样的结构体或者全局变量,也不能出现完全一样的函数(即类型、名称、参数类型完全相同)。

而对于具体的申明/定义的位置则没有特别的要求,只要在使用时已经被申明即可。可以在代码文件(.c)的头部申明要用到的全局变量,在申明某个结构体变量前定义这个结构体。而对于在头文件(.h) 中申明的内容,可以视作该头文件的所有代码出现在代码文件引用头文件处(即include "xxx.h")处。通过这种形式也可以多个代码文件共同包含一个头文件来共用某些结构体,以避免重定义。
extern形式的申明则用于申明那些在其它地方被定义的全局变量或者函数。
引用
评论
1176764177作者
13年5个月前IP:未同步
552038
8楼
回 5楼(xusixteen) 的帖子
试过第一次引用通过后面引用几次几组错误
引用
评论
1176764177作者
13年5个月前IP:未同步
552039
9楼
回 7楼(phpskycn) 的帖子
主要问题是typedef这是个忘记原话了意思就是替换关键字
我把unsigned char 替换成u8
我整个程序都是u8但是这个typedef不知道放到哪里貌似这个语句只管一个文件
引用
评论
1176764177作者
13年5个月前IP:未同步
552040
10楼
回 7楼(phpskycn) 的帖子
其实我看的那些教程都没有教怎么玩多文件一般都是一个,c几个,h
引用
评论
13年5个月前IP:未同步
552042
11楼
回 9楼(1176764177) 的帖子
建议LZ去看C语言的基础教程,比如《C Primer plus》
引用
评论
1176764177作者
13年5个月前IP:未同步
552124
12楼
回 11楼(phpskycn) 的帖子
哦我下一个看看。。。
引用
评论
13年5个月前IP:未同步
556057
13楼
肯定是放在头文件后面
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的