有没有办法在C中为结构做一个java类变量?

时间:2014-07-03 16:48:29

标签: c struct

我有一个结构需要跟踪这个结构的实例数。有没有办法在结构中做到这一点,或者我是否必须在结构外部创建一个单独的计数器并增加它?

由于

2 个答案:

答案 0 :(得分:0)

要执行此操作,您需要一个static变量,但在C中struct不允许有static个变量(在C ++中你可以,因为它们基本上是类) 。特别是因为没有名称空间,所以在struct定义中声明它没有任何区别。

您可以拥有全局static变量,如果您不想公开任何内容,这可能是更简单的解决方案,例如:

//header.h

void incrementCounter();
void decrementCount();
int counterValue();

//header.c

static int counter = 0;

void incrementCounter() { ++counter; }

..

答案 1 :(得分:0)

C语言中没有任何内容可以跟踪何时创建和销毁结构。实际上,当使用malloc()等函数为结构保留内存时,编译器无法知道存在什么结构"。这与Java或C ++不同,Java或C ++中对象可以存在的唯一方法是通过询问对象的代码来创建实例。顺便提一下,在.NET中,类对象通常只是通过对底层类的请求而存在,但结构 - 如在C中 - 可以在没有任何与结构相关的代码知道的情况下生成。