C语言 使用常量参数定义 main (const int argc, const char * const argv[]



在glibc中,main被记录为:

int main (int argc, char *argv[])

int main (int argc, char *argv[], char *envp[])

如果您不想更改它们,您可以将所有参数定义为const吗?

int main (const int argc, const char * const argv[])

它是受支持、不受支持还是非法?

在 C 中,允许实现基本上支持任何类型的main函数,因此您的特定实现很可能允许您提出的各种形式。(事实上,它似乎允许公开环境的三参数版本。但是,实现只需要接受两种形式

int main(void)

int main(int, char**)

由于int(int, const char**)int(int, char**)的类型不同,因此您提出的"constified"版本严格来说并不要求支持,并且属于第一条规则。但是,它很可能有效,因为就 ABI 而言,char*const char*的布局方式相同,并且您获得的数据无论如何都是可变的。

进一步请注意,int f(int)int f(const int)相同的原型,因此在参数的顶级限定方面没有问题。

相关内容

  • 没有找到相关文章

最新更新