我想把一个c程序分解成两个不同的文件。我正在使用静态函数,我想知道这将如何影响我转换到两个文件。我希望我的所有功能都在一个文件中,而所有的功能都在另一个文件中。我需要做什么来使用静态函数是两个不同的文件?多个文件中的静态函数
回答
C中静态函数的链接只在一个文件中,所以你可以调用不同源文件中的静态函数。 所以,你可能需要这个
在交流转换器,其会调用函数吧
int bar(); /*declaration the function type*/
void foo(){bar();} /* just call it*/
静态
int bar(){return 1;}
INT b.c指无形的其他文件。请学习基础知识。
我认为这就是我在做的事 – user124249 2014-12-04 06:11:02
C中的静态函数和C++中的静态成员函数之间有很大的区别。在C中,一个静态函数在其翻译单元之外是不可见的,这是它被编译到的目标文件。换句话说,制作一个静态函数限制了它的范围。你可以将一个静态函数想象为对它的* .c文件“私有”(尽管这不是严格正确的)。 – user124249 2014-12-04 06:19:15
在C++中,“static”适用于类的成员函数和数据成员。静态数据成员也称为“类变量”,而非静态数据成员是“实例变量”。这是Smalltalk术语。这意味着只有一个静态数据成员的副本由一个类的所有对象共享,而每个对象都有自己的非静态数据成员副本。所以一个静态数据成员本质上是一个全局变量,它是一个类的成员。 – user124249 2014-12-04 06:19:35
最健壮的解决方案是首先在头文件中声明'全局可见'函数,然后将此头文件包含在定义或引用该函数的所有函数中。
app.h:
#ifndef _APP_H //why this? left as an excercise for the reader ;-)
#define _APP_H
...
//declare fun()
extern int fun(char * strArg);
...
#endif
def.c:
#include "app.h"
//define fun()
int fun(char * strArg)
{
....
}
ref.c:
#include "app.h"
....
//reference fun()
int ret = fun("this is a test");
....
==========
通过这种方式,您可以确保对fun()的所有引用正确调用它。 如果您碰巧以任何方式更改fun(),或者错误地调用它, 编译器会告诉您需要完成所有更改/修复的位置。
在任何情况下,如果您想要在特定源文件之外显示任何内容,最好不要使用“静态”属性。 ,因为静态属性的目的是使任何静态不可见的源文件外部。
========
- 1. 静态函数在另一个文件
- 2. 多个数组,私有静态函数
- 3. 静态函数导致更多的静态函数
- 4. 静态函数中的静态变量?
- 5. 静态函数和多线程中的C++静态成员
- 6. 静态函数静态函数
- 7. C++ -using文件范围静态函数
- 8. 获取静态函数中的控件
- 9. 如何从另一个静态函数调用静态函数
- 10. 调用一个静态子类中的非静态函数php
- 11. 静态函数中的DialogBox
- 12. c中的静态函数
- 13. “......”一个C静态函数
- 14. 静态函数
- 15. 静态函数
- 16. 链接到Expressjs中的静态文件中的静态文件
- 17. 具有多个.h和.cu文件的静态库无法解析函数
- 18. 作为xaml中的事件处理函数的静态函数
- 19. 在同一个文件中的另一个帮助函数中的类中调用静态函数
- 20. 共享对象中的静态库中的静态函数
- 21. C/C++:头文件中的静态函数,是什么意思?
- 22. 其他文件中的静态函数访问
- 23. C++链接器错误与.hpp文件中的静态函数
- 24. 比较非静态函数中的静态和非静态整数
- 25. 静态函数中的非静态参数
- 26. 头文件中的静态数组 - C++
- 27. Integer.valueOf()静态函数
- 28. DLL静态函数
- 29. php静态函数
- 30. 静态函数swift
您是否考虑过不使用静态函数? – 2014-12-04 01:32:56
静态函数具有“内部链接” - 它们保留在它们声明的文件中。您可以在多个文件中定义相同的静态函数,但更好的解决方案取决于问题的细节。 – Praxeolitic 2014-12-04 01:33:05
似乎没有人提到过,在将C文件包括到另一个C文件中没有任何问题。我这样做是为了在特定环境下保持静态功能,同时保持文件大小的可管理性。 (如果你不喜欢这个,那么这是一个宗教论证,而不是编程问题。) – carveone 2015-07-12 11:26:41