c – 如何将功能仅限于主要功能?

c – 如何将功能仅限于主要功能?,第1张

概述让我们说我有 FILE1.C: #include<stdio.h>#include"File2.c"void test(void){sum(1,2);}int main(void){int sum(int a,int b);test();sum(10,20);return 0;} file2.c中: int sum(int x,int y){printf("\nTh 让我们说我有

file1.C:

#include<stdio.h>#include"file2.c"voID test(voID){sum(1,2);}int main(voID){int sum(int a,int b);test();sum(10,20);return 0;}

file2.c中:

int sum(int x,int y){printf("\nThe Sum is %d",x+y);}

现在我的理解是test()调用sum()应该给出一个编译时错误,因为我已经/声明了sum()本地到main,我没有得到,并且程序运行良好没有任何错误.

我的主要目的是在file2.c中定义sum并使其为main()的本地,这样其他函数就无法看到这个函数sum().

我哪里错了?

解决方法 原型在编译时很有用,因为它们告诉编译器函数的签名是什么.但它们不是访问控制的手段.

你想要做的是将sum()放入与main()相同的源文件中,并赋予它静态链接.将其声明为静态意味着它只能在该.c文件中可用,因此其他源文件中的函数将无法调用它.

然后将test()移动到另一个源文件.这将让main()调用test()但不要让test()调用sum(),因为它现在位于不同的源文件中.

file1.C

#include <stdio.h>/* NO! Do not #include source files. Only header files! *//*** #include "file2.c" ***//* Prototypes to declare these functions. */static int sum(int a,int b);voID test(voID);int main(voID){    test();    sum(10,20);    return 0;}/* "static" means this function is visible only in file1.c. No other .c file can * call sum(). */static int sum(int x,int y){    printf("\nThe Sum is %d",x + y);}

file2.c中

voID test(voID){    /* Error: sum() is not available here. */    sum(1,2);}

顺便提一下,请注意我注释了#include“file2.c”这一行.永远不要将#include用于.c源文件,仅用于.h头文件.相反,您将分别编译两个源文件,然后将它们链接在一起以生成最终程序.

怎么做取决于你的编译器.如果您在windows上使用像Visual C之类的IDE,那么将两个源文件添加到项目中,它将负责将它们链接在一起.在linux上,你可以使用以下内容编译它们:

$gcc -o test file1.c file2.c$./test
总结

以上是内存溢出为你收集整理的c – 如何将功能限于主要功能?全部内容,希望文章能够帮你解决c – 如何将功能仅限于主要功能?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1219025.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存