如何计算没有全局变量的函数的调用次数?

新泽西州

我有一个使用C语言的作业:这段代码是给我们的,它的想法是计算一个函数被调用多少次:

    #include <stdio.h>
int call_counter; //global
void fun()
{  call_counter++;}
void main()
{
 fun();  fun();   fun();
 printf("function \"fun\" was called %d times",call_counter);
}

然后他们问我们以下问题:如果变量“ call_counter”不是全局变量,则应如何以及在何处声明它?

我试图将其声明为main内部的静态变量,但是即使调用该函数,该值也不会增加:

#include <stdio.h>

void fun()
{  call_counter++;}
void main()
{
static int call_counter = 0;
fun();  fun();   fun();
printf("function \"fun\" was called %d times",call_counter);
}

但是输出为0,我不知道如何调整代码来解决这个问题谢谢

马克·博内利

您有四个选择:

  1. 使用全局变量。
  2. 将引用传递给函数计数器,并在函数内部增加计数器。
  3. static在函数内部使用本地计数器,每次都返回它。
  4. 在调用程序中使用宏加上本地变量。

对于选项2,您可以执行以下操作:

void foo(unsigned *count) {
    (*count)++;
    // do something
}

int main(void) {
    unsigned count = 0;
    foo(&count); foo(&count); foo(&count);
    // count is now 3
}

对于选项3:

unsigned foo(void) {
    static unsigned count;
    count++;
    // do something
    return count;
}

int main(void) {
    unsigned count;
    foo(); foo(); 
    count = foo();
    // count is now 3
}

对于选项4:

void foo(void) {
    // do something
}

int main(void) {
    unsigned count = 0;

#define FOO_COUNT() do { foo(); count++; } while (0)

    FOO_COUNT(); FOO_COUNT(); FOO_COUNT();
    // count is now 3
}

或以其他更一般的方式:

#define FN_COUNT(fn, counter) do { (fn)(); (counter)++; } while (0)

void foo(void) {
    // do something
}

int main(void) {
    unsigned count = 0;
    FN_COUNT(foo, count); FN_COUNT(foo, count); FN_COUNT(foo, count);
    // count is now 3
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何计算没有全局变量的函数的调用次数?

来自分类Dev

如何计算没有全局变量的函数的调用次数?

来自分类Dev

没有全局变量或函数参数的递归调用

来自分类Dev

使变量在没有全局变量的函数外部可用

来自分类Dev

使变量在没有全局变量的函数外部可用

来自分类Dev

在没有全局变量的C ++函数中创建数组

来自分类Dev

函数内部的JavaScript延迟,没有全局变量

来自分类Dev

探测全局变量以调用内部函数

来自分类Dev

OpenMP,通过函数调用全局变量

来自分类Dev

在 C 中没有全局变量或更改函数输入的函数内部数组的变量分配

来自分类常见问题

没有受限的全局变量

来自分类Dev

全局变量PHP没有更新

来自分类Dev

如何在python中没有全局变量的情况下安全地将代码分为函数

来自分类Dev

如何通过函数更改全局变量?

来自分类Dev

matlab中未定义的函数或没有全局变量的变量

来自分类Dev

当函数具有同义局部变量时,如何在函数中获取全局变量?

来自分类Dev

当我尝试从脚本中的函数更改全局变量时,没有任何反应吗?

来自分类Dev

在没有全局变量的情况下,在解耦的函数\方法之间共享数据

来自分类Dev

重新设计一个函数,使其在C中没有全局变量

来自分类Dev

如何在rpg程序中定义可在调用函数中访问的全局变量

来自分类Dev

如何在rpg程序中定义可在调用函数中访问的全局变量

来自分类Dev

当不同的函数需要数据库调用中的数据时,如何避免全局变量。(JS)

来自分类Dev

C ++如何区分对全局变量的调用和对全局变量的声明?

来自分类Dev

如何计算Erlang中的函数调用次数?

来自分类Dev

如何计算Erlang中的函数调用次数?

来自分类Dev

如何使函数内部的变量成为全局变量?

来自分类Dev

如何使在函数内部创建的变量变为全局变量?

来自分类Dev

如何使在函数内部创建的变量变为全局变量?

来自分类Dev

如何将值传递给没有全局变量的匿名化回调?

Related 相关文章

  1. 1

    如何计算没有全局变量的函数的调用次数?

  2. 2

    如何计算没有全局变量的函数的调用次数?

  3. 3

    没有全局变量或函数参数的递归调用

  4. 4

    使变量在没有全局变量的函数外部可用

  5. 5

    使变量在没有全局变量的函数外部可用

  6. 6

    在没有全局变量的C ++函数中创建数组

  7. 7

    函数内部的JavaScript延迟,没有全局变量

  8. 8

    探测全局变量以调用内部函数

  9. 9

    OpenMP,通过函数调用全局变量

  10. 10

    在 C 中没有全局变量或更改函数输入的函数内部数组的变量分配

  11. 11

    没有受限的全局变量

  12. 12

    全局变量PHP没有更新

  13. 13

    如何在python中没有全局变量的情况下安全地将代码分为函数

  14. 14

    如何通过函数更改全局变量?

  15. 15

    matlab中未定义的函数或没有全局变量的变量

  16. 16

    当函数具有同义局部变量时,如何在函数中获取全局变量?

  17. 17

    当我尝试从脚本中的函数更改全局变量时,没有任何反应吗?

  18. 18

    在没有全局变量的情况下,在解耦的函数\方法之间共享数据

  19. 19

    重新设计一个函数,使其在C中没有全局变量

  20. 20

    如何在rpg程序中定义可在调用函数中访问的全局变量

  21. 21

    如何在rpg程序中定义可在调用函数中访问的全局变量

  22. 22

    当不同的函数需要数据库调用中的数据时,如何避免全局变量。(JS)

  23. 23

    C ++如何区分对全局变量的调用和对全局变量的声明?

  24. 24

    如何计算Erlang中的函数调用次数?

  25. 25

    如何计算Erlang中的函数调用次数?

  26. 26

    如何使函数内部的变量成为全局变量?

  27. 27

    如何使在函数内部创建的变量变为全局变量?

  28. 28

    如何使在函数内部创建的变量变为全局变量?

  29. 29

    如何将值传递给没有全局变量的匿名化回调?

热门标签

归档