求C语言高手 .c程序运行正确 但是改成.h要被一个主程序调用时出现错误

2025-02-26 15:40:05
推荐回答(5个)
回答1:

1、应该分开写,一个在头文件,一个在.c文件。如果分要一起,可以用.c,但是一定要使用包含include

2、#define uint unsigned int
#define uchar unsigned char
都是宏定义,使用unsighde int替换uint
使用unsigned char 替换uchar。写的不正规,建议采用大写来定义宏。例如:UINT UCHAR

3、中断子程序的内部方法一样,但是调用是由系统做的,所以,你要有开中断语句。或者你自己轮询检测中断标志位也可以。至于开中断语句要具体看你是什么中断。

4、第一个出错原因是中断函数不可以放在头文件中,头文件的内容是在连接的时候一起并入程序的。第二个错误,你可能单词拼写错误,yue这个词。你可以用ctrl+F进行查找。

5、应该注意,不要重复包含。头文件要右#ifndef #define #endif
并入函数尽量只写函数声明,在.c里面写函数体。

在c语言里是可以改成.c的,但是采用,一个头文件一个定义文件比较好。

意思就是:多余部分,忽视覆盖过程.

大哥,你这么折腾,我们都要废了。不能超过20的原因可能是你的FIFO转存器的大小就这么大。超过就溢出了呗
FIFO就是转存器,其实就是存储器,用来缓冲数据的。如果不是溢出问题,那就真不可能了。

回答2:

你给出的函数是没问题的,至于改成头文件后出错的话有可能是一下问题:
1..h这个文件放得位置是有要求的,你最好把它放到与这类头文件同一个文件夹内,如果还有问题,那你在main程序页,extern下你要调用的函数jmwt,格式为:extern int jmwt();当然mian程序中必须包含.h这个新头文件.
在我的编译器中我试了下,是能调用的,没有什么问题!

回答3:

如果是C语言,
int jmwt()
{
gets(str);
int i;
int len=strlen(str);
这里需要注意了,定义变量要在作用域的头部,比如本函数,i,len需要先定义,需要改成:
int jmwt()
{ int i;
int len;
gets(str);
len=strlen(str);

还有,本文件中有一个全局变量char str[10000];
如果本文件被多个文件调用,会出现str多处定义的错误。最好是每个文件都分成.c和.h文件。

回答4:

要封装成头文件形式。。。必须要保证单独运行时不会有任何问题。
如果是C的格式就必须严格按照标准来,而且还要有避免重复定义的问题。
见一楼。。。

回答5:

你用的是什么编译器?