int32_t main() vs int main()

5

我写了一个cpp程序,用 int32_t main() 可以运行,但是用签名为 int main() 的程序则不能运行。

有人能告诉我原因吗?我的文件是.cpp文件而不是.c文件(在其他一些问题中提到)。


6
听起来很奇怪。你能发布源代码吗? - Audrius Meškauskas
对于 int32_t main() {}int main() {},同样会发生吗?我的意思是,使用空的 main - Enlico
6
请展示一个 [mre] 并添加一些关于您无法运行它的细节。这是否意味着它无法编译? - Lukas-T
int32_t main() {}int main() 在OnlineGDB上似乎都能正常工作。您需要通过编辑问题添加更多信息。 - Rohan Bari
1
哪个编译器?平台是什么?错误信息是什么?等等。 - Jean-Baptiste Yunès
显然,这个错误是由于一个包含文件中的奇怪的#define int语句引起的。 - turtlehouse
1个回答

7
可能的解释是,您在顶部的其中一个#include文件中将int重新定义为其他内容。如果某人尝试通过重新定义int来更改某些算法中的数据类型,则可能会发生这种情况。
尝试在int main()之前立即插入#undef int以恢复“int”的默认含义。

是的,如果这个可恶的东西确实发生了,那么这就是解决方法。但重要的是要强调,这种情况永远不应该出现。+1。 - Pete Becker
任何错误都可以这样说。 - Audrius Meškauskas
重新定义关键字并不是“任何错误”。没有充分的理由这样做,而且会使代码难以阅读。更不用说在除了最简单的程序之外引入未定义行为了。 - Pete Becker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接