最新消息:

通过extern和static实现c语言的封装

C/C++ admin 2903浏览 0评论

C语言并不是面向对象的程序设计语言,但是我们可以通过extern和static实现程序的封装和隐蔽。

举个例子,我们在主函数中要使用一个栈,栈的实现代码在stack.c中,我们要主函数不能访问stack.c中的除压栈,出栈之外的所有变量和函数,那么我们就可以把这些不想被访问的变量或函数声明为static,这样主函数将无法访问。

下面是代码例子:

main.c文件:

1
2
3
4
5
6
7
8
<span style="color: #993333;">int</span> main<span style="color: #009900;">(</span><span style="color: #993333;">void</span><span style="color: #009900;">)</span>
<span style="color: #009900;">{</span>
<span style="color: #000000; font-weight: bold;">extern</span> <span style="color: #993333;">void</span> push<span style="color: #009900;">(</span><span style="color: #993333;">char</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">extern</span> <span style="color: #993333;">char</span> pop<span style="color: #009900;">(</span><span style="color: #993333;">void</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>

...

<span style="color: #009900;">}</span>

stack.c文件:

1
2
3
4
5
6
7
8
9
10
<span style="color: #993333;">static</span> <span style="color: #993333;">char</span> stack<span style="color: #009900;">[</span><span style="color: #0000dd;">512</span><span style="color: #009900;">]</span><span style="color: #339933;">;</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">int</span> top <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
<span style="color: #993333;">void</span> push<span style="color: #009900;">(</span><span style="color: #993333;">char</span> c<span style="color: #009900;">)</span>
<span style="color: #009900;">{</span>
stack<span style="color: #009900;">[</span><span style="color: #339933;">++</span>top<span style="color: #009900;">]</span> <span style="color: #339933;">=</span> c<span style="color: #339933;">;</span>
<span style="color: #009900;">}</span>
<span style="color: #993333;">char</span> pop<span style="color: #009900;">(</span><span style="color: #993333;">void</span><span style="color: #009900;">)</span>
<span style="color: #009900;">{</span>
<span style="color: #b1b100;">return</span> stack<span style="color: #009900;">[</span>top<span style="color: #339933;">--</span><span style="color: #009900;">]</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span>

这样,就实现了栈内部变量的隐蔽和保护。

转载请注明:爱开源 » 通过extern和static实现c语言的封装

您必须 登录 才能发表评论!