【发布时间】:2020-12-26 15:22:32
【问题描述】:
在表单中使用main函数:
int main(int argc, const char* argv[])
非便携和非标准? C++ 标准说argv 是“指向字符指针的指针”。我更喜欢使用 const 这个词来防止在(对我而言)未知的内存区域进行修改和越界。
这样的形式是错误的,不可移植的吗?
【问题讨论】:
-
main()的正确签名是ìnt main(int argc, char **argv)。 (这是出于历史原因。) -
仅供参考:SO: Are the strings in argv modifiable?(嗯 - 它是为 C 编写的。我试图为 C++ 找到一些东西 - 最近读过一些东西......)
-
@Scheff 好的,它是正确的,但是签名
ìnt main(int argc, const char **argv)不正确吗? -
是的。
main()的可能签名由标准定义:Main function(可能有扩展,但这取决于编译器。显然,您的编译器不喜欢const char *argv[]。);-) -
我更喜欢使用 const 这个词来防止在我不知道的内存区域进行修改和越界。 有一个非常简单的解决方案:
namespace My { int main(int argc, const char *argv[]) { /* your code */ return 0; } } /* namespace My */ int main(int argc, char **argv) { return My::main(argc, argv); }