Eva*_*oll 3 c program-entry-point arguments constants
在glibc中, main 被记录为,
int main (int argc, char *argv[])
Run Code Online (Sandbox Code Playgroud)
或者,
int main (int argc, char *argv[], char *envp[])
Run Code Online (Sandbox Code Playgroud)
const
如果您不想更改所有参数,您可以将它们定义为原样吗?
int main (const int argc, const char * const argv[])
Run Code Online (Sandbox Code Playgroud)
是支持、不支持还是非法?
在 C 中,实现基本上可以支持函数的任何类型main
,因此您的特定实现很可能允许您提出的各种形式。(事实上,它似乎允许公开环境的三参数版本。)但是,实现只需要接受两种形式
int main(void)
Run Code Online (Sandbox Code Playgroud)
和
int main(int, char**)
Run Code Online (Sandbox Code Playgroud)
由于int(int, const char**)
与 的类型不同int(int, char**)
,严格来说,您提出的“constified”版本并不需要支持,并且属于第一条规则。然而,它很可能有效,因为char*
就const char*
ABI 而言,它的布局方式相同,而且您提供的数据无论如何都是可变的。
进一步注意,int f(int)
和int f(const int)
是相同的原型,因此这里关于参数的顶级资格没有问题。
归档时间: |
|
查看次数: |
1195 次 |
最近记录: |