【发布时间】:2014-05-04 08:29:46
【问题描述】:
这里有三个不同的文件。我正在尝试添加myfunc.h,就像将C库头文件添加到包含main的程序中一样,这样myfunc.h中存在的函数就可以通过使用#include<myfunc.h>来调用.
myfunc.c
float power(float p, float q)
{
float r,prod;
int i;
prod=p;
for(i=1;i<=q-1;i++)
prod=prod*p;
return prod;
}
char prime(int n)
{
int i;
for(i=2;i<=n-1;i++)
{
if(n%i==0)
return 'N';
}
if(n==i)
return 'Y';
}
myfunc.h
float power(float p, float q);
char prime(int n);
Practice.c 包含main()
#include <stdio.h>
#include "myfunc.h"
main()
{
int i,k;
printf("\nEnter Number = ");
scanf("%d",&i);
k=prime(i);
printf("\n IS %d PRIME = %c",i,k);
}
问题:1如何在我的 中使用 myfunc.c 和 myfunc.h main 程序?
问题:2我创建并编译了 myfunc.h,它反过来生成了 myfunc.h.gch 文件。这是什么myfunc.h.gch?
考虑 Example 计划。
#include <stdio.h>
main()
{
printf("This is an Example.");
}
我是否在 main() 或任何地方声明或定义了 printf()?不,我只是用传入的值调用它。但是程序仍然可以成功编译和执行。
这正是我希望 myfunc.c 中的函数被调用的方式。我该怎么做?
【问题讨论】:
-
尚不清楚您有什么具体问题。您已经使用您应该使用的标准、广泛使用的技术成功地编译了您的程序。这里没有任何问题。就这样继续下去。
-
“在此之后,我创建并编译了 myfunc.h,然后生成了 myfunc.h.gch”。这个不是很广泛使用。您已经在此处构建了一个预编译的头文件。我建议不要使用预编译头文件,除非您有一个大型项目,否则编译时间太长。您可能不希望与它们相关的任何额外复杂性。
-
@n.m.我在问题中编写的示例代码可以使用
gcc -oExample Example.c进行编译,只需编写Example即可执行。但是要编译 myfunc.c 我首先需要编写gcc -c myfunc.c -omyfunc.o来创建一个目标文件,而不是通过使用gcc -oPractice Practice.c myfunc.o.Than 与 Practice.c 链接来编译它程序被执行。但我正在尝试编译并执行一次 myfunc.c 并能够调用它的所有函数,就像编写#include<stdio.h>一样。 -
没人做,不推荐,会导致各种问题。 C 库是一个大而复杂的东西。触摸它几乎肯定会破坏您机器上的东西。不要那样做。你这样做的方式是正常的和被接受的方式。
标签: c function header-files