在main()中定义一个函数

时间:2014-04-08 13:17:10

标签: c conventions nested-function

出于好奇,在C中main()内定义一个函数是不是很糟糕?

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

3 个答案:

答案 0 :(得分:6)

GCC允许它,但它是一个特定于该编译器的非标准扩展 - 所以你的代码不会在任何其他编译器上编译

答案 1 :(得分:5)

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

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

struct s {...};

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

int main() {

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

}

答案 2 :(得分:0)

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

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

相关问题