Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
制作一个简单的C头文件_C_Header Files - Fatal编程技术网

制作一个简单的C头文件

制作一个简单的C头文件,c,header-files,C,Header Files,我有一个功能void MOTOR(int left,int back,int right) 此函数运行另一个函数:void PWMe(int left,int back,int right) MOTOR使用此变量和一些全局变量 我想制作一个包含MOTOR,但不包含PWMe(注意PWMe是mainproj.c中的一个函数)的头文件 我的第一个问题是,如何创建包含MOTOR、usesPWMe和来自mainproj.c的全局变量的头文件 其次,我想将MOTOR.c更改为assembly和MOTOR.l

我有一个功能
void MOTOR(int left,int back,int right)

此函数运行另一个函数:
void PWMe(int left,int back,int right)

MOTOR
使用此变量和一些全局变量

我想制作一个包含
MOTOR
,但不包含
PWMe
(注意
PWMe
mainproj.c
中的一个函数)的头文件

我的第一个问题是,如何创建包含MOTOR、uses
PWMe
和来自
mainproj.c
的全局变量的头文件


其次,我想将
MOTOR.c
更改为assembly和
MOTOR.lib
标题的全部目的是公开声明。如果希望
MOTOR(int,int,int)
的实现被定义它的源文件以外的任何源文件看到,可以将它放在头文件中

现在,如果您在别处声明了另一个函数
PWMe(int,int,int)
,那么同样的事情也适用。要使
马达
函数能够调用它,您需要在标题中公开它。我猜它是在
mainproj.c
中定义的

电机.h

#ifndef MOTOR_H__
#define MOTOR_H__

void MOTOR( int left, int back, int right );

#endif
#ifndef MAINPROJ_H__
#define MAINPROJ_H__

extern const char const *one_hit_wonder;

void PWMe( int left, int back, int right );

#endif
mainproj.h

#ifndef MOTOR_H__
#define MOTOR_H__

void MOTOR( int left, int back, int right );

#endif
#ifndef MAINPROJ_H__
#define MAINPROJ_H__

extern const char const *one_hit_wonder;

void PWMe( int left, int back, int right );

#endif
请注意,在
mainproj.h
中,我声明了一个变量和一个函数。希望你能明白。以下是实现:

mainproj.c

#include "mainproj.h"

const char const *one_hit_wonder = "Yazz";

void PWMe( int left, int back, int right )
{
    printf( "The only way is up, baby\n" );
}
#include "motor.h"
#include "mainproj.h"

void MOTOR( int left, int back, int right )
{
    PWMe( left, back, right );
    printf( "For you and me now\n" );
    printf( "\n - %s\n", one_hit_wonder );
}
电机c

#include "mainproj.h"

const char const *one_hit_wonder = "Yazz";

void PWMe( int left, int back, int right )
{
    printf( "The only way is up, baby\n" );
}
#include "motor.h"
#include "mainproj.h"

void MOTOR( int left, int back, int right )
{
    PWMe( left, back, right );
    printf( "For you and me now\n" );
    printf( "\n - %s\n", one_hit_wonder );
}

现在,用任何参数调用
MOTOR
,都会产生一首80年代流行单曲的吸引人的合唱。

而不是业余的C头文件?我不知道你要做什么。。。您希望使用
内联
版本的
MOTOR()
函数创建头文件,还是希望将原型放置在头文件中?制作headerfile时遇到了哪些问题?至于将
MOTOR.c
更改为assembly。。。是否要删除编译器的输出?是否要在程序集中重写函数?如果是这样的话,目标拱是什么?我只想要我的答案……不,我在制作头文件时遇到了一些问题,我为头文件制作了这样的文件:#如果包含电机#定义电机#包含电机#使用了pragma+无效电机(int left,int back,int right)#使用的pragma-#pragma library motor.lib extern int older、left_old、right_old、back_old、pr_old、pl_old、pb_old、mright、mleft、mback、min#endif//MOTOR\u H\u included如果你在教编程,我建议你先掌握基础知识。如果你不能清楚地解释你想做什么,那么你就不应该在教学。我需要+1这个作为答案,然后+1它作为80年代参考:-)好的,我在我的mainproj.c文件中定义并使用PWMe,谢谢,但是我如何使motor.c转换为motor.lib和汇编语言。还有一件新事情是我在motor中使用了一些全局变量;我需要在哪里声明以及如何在“mainproj.c”中使用它?@mohammadjavadrahman我看到我如何在
mainproj.h
中从
mainproj.c
声明全局,然后在
motor.c
中使用它了吗?反过来做。至于“assembly”注释,您是指“compile”吗?你真的应该把它作为一个单独的问题来问,并确保你提到了你正在使用的编译器。不,看,你错了。如果共享lib文件,则共享已编译的目标代码,而不是源代码。如果你的学生能够分解它并理解算法,那么它要么非常简单,要么应该是他们教你的!;-)您可以将多个C源代码编译成一个库,并提供一个头。它甚至不必使用相同的头-您只需要提供您希望它们使用的声明。