即#define USART1 ((USART_TypeDef *) 0x4001 3800)
就句话的意好链思是,0X4001 3800是一个指改宽向USART_TypeDef结构体的指针,现在给这指针取了一个名字USART1。
至于这个0x4001 3800是怎核袜亮么来的,请看RM0008 Reference manual 文档51 页 TABLE3的第7行。
这样做是不对的应该这样:
文件str.h
struct STR
{
int a
int b
文件str.cpp
#include "str.h"
struct STR str//在这里声明
文件main.cpp
#include <stdio.h>
#include "str.h"
extern struct STR str//这样就可铅返以引用外部变量了
int main(void)
{
str.a = 8
return 0
}
总结:
1、#include只引用头文件,不要引用程序文件
2、#include只声明类型,不要声明变量,因为多次引用会对同一变量多次分配内存,是错误的重复定义;
3、变量定义必须放在槐喊饥程序体文件,渗枣这样在其他程序体只要声明extern就可以引用了
在头文件里锋段定义或基扒结构,例如:typedef struct {
int a, b
} S
S s_instance
在其他文件里引用就衫昌可以。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)