2

出于好奇,main()在 C 中定义函数是否被认为是不好的做法?

我正在编写的当前程序的问题是我有 20 个指向内部定义main()的结构的指针(指针,而不是结构本身,它们在其他文件中),并且我有一段代码需要多次调用不同的参数,它必须具有修改任何指针的能力。我找到的唯一解决方案(我是 C 新手)是在其中定义一个函数,main()该函数具有修改任何指针的正确范围。

4

3 回答 3

5

GCC 允许它,但它是特定于该编译器的非标准扩展 - 因此您的代码不会在任何其他编译器上编译

于 2014-04-08T13:20:03.643 回答
5

嵌套函数(函数中的函数)是 GNU 唯一的扩展,而不是任何常规 C 标准的一部分。任何其他编译器都无法编译它。因此,我强烈反对使用嵌套函数。

在外面声明你的结构和函数。然后,您始终可以将指向您的数据结构的指针传递给您的函数。

struct s {...};

void foo(struct s *, ...);

int main() {

  struct s mystruct;
  foo(&mystruct, ...);

}
于 2014-04-08T13:19:50.890 回答
0

Gcc 编译器允许您在其他方法中定义方法(实际上这是一个 Gnu 扩展)。但是,通常,这是一种不好的做法。

在您的情况下,这是您的方法了解此特定类型的唯一方法。但我建议您将类型设为外部并声明以正常方式使用此类型的方法(在任何其他方法之外)。

于 2014-04-08T13:22:20.473 回答