【问题标题】:int32_t main() vs int main()int32_t main() 与 int main()
【发布时间】:2020-08-24 08:56:48
【问题描述】:

我编写了一个 cpp 程序,我可以使用 int32_t main() 运行它,但不能使用签名 int main()

谁能告诉我为什么?它是 .cpp 文件,而不是 .c 文件(如其他一些问题中所述)。

【问题讨论】:

  • 听起来很奇怪。能发下源代码吗?
  • int32_t main() {}int main() {} 是否也会发生这种情况?我的意思是,空的main
  • 请显示minimal reproducible example 并添加一些有关您无法运行它的详细信息。这是否意味着它不能编译?
  • int32_t main() {} & int main() 似乎都在 OnlineGDB 上运行良好。您需要通过编辑向您的问题添加更多信息。
  • 哪个编译器?平台?错误信息是什么?等

标签: c++ signature int32


【解决方案1】:

可能的解释是您顶部的#include 文件之一将int 重新定义为其他内容。如果有人试图通过简单地重新定义 int 来更改某些算法中的数据类型,则可能会发生这种情况。

尝试将#undef int 放在int main() 之前的一行中,以恢复“int”的默认含义。

【讨论】:

  • 是的,如果这种可憎的事情真的发生了,那就是解决方法。但重要的是要强调,决不能允许这种情况出现。 +1。
  • 所以可以说任何错误。
  • 重新定义关键字不是“任何错误”。没有充分的理由这样做,它使代码不可读。更不用说将未定义的行为引入除了最琐碎的程序之外的任何程序中。
猜你喜欢
  • 2016-01-05
  • 2012-03-10
  • 1970-01-01
  • 2018-03-16
  • 2013-11-04
  • 1970-01-01
  • 2012-08-26
  • 2020-11-03
  • 1970-01-01
相关资源
最近更新 更多