Embedded 头文件包含不包含';不能在MPLAB X IDE中工作
这是我的主.c文件Embedded 头文件包含不包含';不能在MPLAB X IDE中工作,embedded,microchip,mplab,Embedded,Microchip,Mplab,这是我的主.c文件 #include "services_initialisations_prototype.h" #include "services_functions_prototype.h" void main(void) { initSfr(); while(1){ updateMatrix(404, 1); } return; } 这是我的服务\u初始化\u原型。h
#include "services_initialisations_prototype.h"
#include "services_functions_prototype.h"
void main(void)
{
initSfr();
while(1){
updateMatrix(404, 1);
}
return;
}
这是我的服务\u初始化\u原型。h
#ifndef XC_HEADER_TEMPLATE_H
#define XC_HEADER_TEMPLATE_H
#include <xc.h> // include processor files - each processor file is guarded.
#include <stdint.h>
//these are my function declarations
extern void initInterrupt();
extern void initIoc();
extern void initAdc();
extern void initTimer2();
extern void initSfr();
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* XC_HEADER_TEMPLATE_H */
#ifndef XC_HEADER_TEMPLATE_H
#define XC_HEADER_TEMPLATE_H
#include <xc.h> // include processor files - each processor file is guarded.
#include <stdint.h>
//these are my function declarations
extern void updateMatrix(int, int);
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* XC_HEADER_TEMPLATE_H */
#ifndef XC\u标题\u模板\u H
#定义XC\u头\u模板\u H
#include//include processor files-每个处理器文件都受保护。
#包括
//这些是我的函数声明
外部无效初始化中断();
外部无效初始化();
外部无效initAdc();
外部无效initTimer2();
extern void initSfr();
#ifdef_uucplusplus
外部“C”{
#endif/*\uuu cplusplus*/
#ifdef_uucplusplus
}
#endif/*\uuu cplusplus*/
#endif/*XC\u头\u模板\u H*/
这是我的服务功能原型
#ifndef XC_HEADER_TEMPLATE_H
#define XC_HEADER_TEMPLATE_H
#include <xc.h> // include processor files - each processor file is guarded.
#include <stdint.h>
//these are my function declarations
extern void initInterrupt();
extern void initIoc();
extern void initAdc();
extern void initTimer2();
extern void initSfr();
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* XC_HEADER_TEMPLATE_H */
#ifndef XC_HEADER_TEMPLATE_H
#define XC_HEADER_TEMPLATE_H
#include <xc.h> // include processor files - each processor file is guarded.
#include <stdint.h>
//these are my function declarations
extern void updateMatrix(int, int);
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* XC_HEADER_TEMPLATE_H */
\ifndef XC\u头\u模板\u H
#定义XC\u头\u模板\u H
#include//include processor files-每个处理器文件都受保护。
#包括
//这些是我的函数声明
外部无效更新矩阵(int,int);
#ifdef_uucplusplus
外部“C”{
#endif/*\uuu cplusplus*/
#ifdef_uucplusplus
}
#endif/*\uuu cplusplus*/
#endif/*XC\u头\u模板\u H*/
当我试图在MPLAB X IDE版本4.05中包含两个头文件时,它似乎没有识别第二个头文件。我尝试交换订单,但仍然没有检测到第二个订单
服务\初始化\原型。h包含SFR和服务\函数\原型的初始化。h包含其他函数的原型。这些功能相互独立
当我编译时,它显示
函数updateMatrix()声明为隐式int。
变量_updateMatrix()的声明冲突
这表明未识别头文件服务函数原型
所附的屏幕截图以灰色显示了services_functions_prototype.h中的代码,部分代码似乎没有执行
当我将整个声明从头文件复制到主文件时,它工作得非常好。您在两个文件中使用了相同的include-guard。因为一个文件包含在另一个文件之前,所以它定义了
XC\u HEADER\u TEMPLATE\u H
,这使得\ifndef
在第二个文件中失败。把它们换成独一无二的东西
请记住,带有两个前导下划线的标识符或带有一个前导下划线和一个大写字母的标识符由C标准保留。好的在线文档已经准备好了
使用带有大写字母的文件名,如服务\u函数\u原型\u H
和服务\u初始化\u原型\u H
注:
- 函数声明中的空参数列表声明接受未知计数和参数类型的函数。更喜欢在函数参数列表中显式写入
,以定义不带参数的函数,从而启用编译器静态检查。即dovoid
void initInterrupt(void)代码>李>
- 在文件范围中声明的标识符隐式地与外部链接一起使用。例如,
只是多余的,只是extern
void initSfr(void)代码>而不是
extern void initSfr()代码>
部分在您的标题中没有任何意义-它里面没有任何内容。这是放置extern“C”{
extern“C”的典型调用{ //> >头文件顶部,包括内部所有内容。如果您的头将由C++编译器使用,函数名称将被损坏,并且没有正确解决。我相信我建议删除“<代码>外部”C”{<代码> >部分。
- 在文件范围中声明的标识符隐式地与外部链接一起使用。例如,