【问题标题】:C Function Skipped at Runtime运行时跳过的 C 函数
【发布时间】:2010-12-19 03:19:00
【问题描述】:

我的程序中有以下 C 代码:

printf("Test before print_foo()");
void print_foo(char board[ROW][COL]);
printf("Test after print_foo()");

其中 print_foo printf 是传入的二维字符数组,其中导入了正确的 .c 和 .h 文件。

控制台输出只有两条 printf 语句。 调试,运行时甚至从不进入 print_foo。

有什么想法吗?

【问题讨论】:

  • 糟糕。谢谢大家的及时回复。

标签: c function runtime void


【解决方案1】:

如果你之前没有声明原型,那么你必须这样写:

printf("Test before print_foo()");
void print_foo(char board[ROW][COL]);
print_foo(board);
printf("Test after print_foo()");

简而言之,您必须在调用之前定义/声明 print_foo,否则您的编译器将标记错误!

【讨论】:

    【解决方案2】:
    void print_foo(char board[ROW][COL]);
    

    不是函数调用。这是一个声明。

    你可能想要

    print_foo(board);
    

    【讨论】:

    • “你可能想要”这一行可能不正确。有关更多上下文和更可能的答案,请参阅 Alex Martelli 的答案。
    【解决方案3】:

    void 前缀使中间行成为函数 print_foo 的声明(括号内的 char 表示否则它将是无效的语法)。要调用 print_foo,将中间行更改为print_foo(board);(如果board 是您命名该二维字符数组的方式)。

    【讨论】:

      【解决方案4】:

      你的中间行只是一个函数声明,而不是函数调用。

      【讨论】:

        【解决方案5】:

        在我看来,这就像一个函数声明——这就是你的 foo-nction 没有被调用的原因。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-01
          • 2021-12-03
          • 1970-01-01
          • 2013-10-02
          • 2019-03-06
          • 2011-02-16
          • 1970-01-01
          • 2019-06-22
          相关资源
          最近更新 更多