【问题标题】:Is there a way to remove the "int main{}" in C++ [closed]有没有办法在 C++ 中删除“int main{}”[关闭]
【发布时间】:2021-12-27 10:35:50
【问题描述】:

我搜索了一些但只找到了基于 C 而不是 C++ 的主题,here

所以我想知道是否有办法使用一些奇怪的函数或缩短代码的东西来删除主函数

【问题讨论】:

  • main 是应用程序的入口点。图书馆没有主目录。你想达到什么目标,为什么?
  • 目标到底是什么?将代码缩短到什么目的?
  • "main" 是“入口点”的标准名称。根据链接器,您可以选择任何函数名称作为入口点。 stackoverflow.com/questions/7494244/… 的可能重复项
  • 托管环境(例如 Windows、unix 变体等)需要 main() 函数作为入口点(并且标准禁止实现定义 main() 函数)。除了main(),在独立环境中也可以有一个入口点——但仍然需要一个入口点。

标签: c++


【解决方案1】:

有两种方法。

首先是构建一个库而不是一个应用程序。你不能运行它,但它会将你的代码构建到一个可以被其他应用程序链接的库中。例如,在 g++ 中,您可以这样做:

g++ -c my_file.cc -o my_file.o
g++ -shared -o libmy_file.so my_file.o

另一种方法是修改链接描述文件,使其使用除 main 之外的入口点。以符合 C++ 标准的方式执行此操作是不可能的,但大多数链接器都会为您提供执行此操作的方法。例如,请参阅here 了解如何使用 GNU 链接器进行操作。

【讨论】:

  • 拥有一个没有main() 函数的库固然很好,但是仍然需要一个程序来连接/链接到该库并调用其中的函数。如果该程序是用 C++(在托管环境中)编写的,则该程序将需要一个 main() 函数。在独立环境中,允许 C++ 实现具有除 main() 之外的入口点 - 但仍然需要具有入口点。
  • 这里的主要问题是不清楚 OP 试图实现什么。从他们链接的其他答案来看,它可能试图避免在int main 中写入int 的四个字节。除非这与尝试“在 256 字节中编写最佳演示”比赛或类似的比赛有关,否则尝试似乎不是一件有用的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-29
  • 2016-07-14
  • 1970-01-01
  • 2011-02-24
  • 1970-01-01
相关资源
最近更新 更多