出于好奇,main()
在 C 中定义函数是否被认为是不好的做法?
我正在编写的当前程序的问题是我有 20 个指向内部定义main()
的结构的指针(指针,而不是结构本身,它们在其他文件中),并且我有一段代码需要多次调用不同的参数,它必须具有修改任何指针的能力。我找到的唯一解决方案(我是 C 新手)是在其中定义一个函数,main()
该函数具有修改任何指针的正确范围。
出于好奇,main()
在 C 中定义函数是否被认为是不好的做法?
我正在编写的当前程序的问题是我有 20 个指向内部定义main()
的结构的指针(指针,而不是结构本身,它们在其他文件中),并且我有一段代码需要多次调用不同的参数,它必须具有修改任何指针的能力。我找到的唯一解决方案(我是 C 新手)是在其中定义一个函数,main()
该函数具有修改任何指针的正确范围。
GCC 允许它,但它是特定于该编译器的非标准扩展 - 因此您的代码不会在任何其他编译器上编译
嵌套函数(函数中的函数)是 GNU 唯一的扩展,而不是任何常规 C 标准的一部分。任何其他编译器都无法编译它。因此,我强烈反对使用嵌套函数。
在外面声明你的结构和函数。然后,您始终可以将指向您的数据结构的指针传递给您的函数。
struct s {...};
void foo(struct s *, ...);
int main() {
struct s mystruct;
foo(&mystruct, ...);
}
Gcc 编译器允许您在其他方法中定义方法(实际上这是一个 Gnu 扩展)。但是,通常,这是一种不好的做法。
在您的情况下,这是您的方法了解此特定类型的唯一方法。但我建议您将类型设为外部并声明以正常方式使用此类型的方法(在任何其他方法之外)。