c/c++语言开发共享为什么带有静态main()类型的程序显示错误?

#include static int main() { printf("foo"); return 0; } 

代码给出了错误

  nfo):重定位12具有无效符号索引13  / usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位13具有无效的符号索引13  / usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位14具有无效的符号索引13  / usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位15具有无效的符号索引13  / usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位16具有无效的符号索引13  / usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位17具有无效的符号索引13  / usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位18具有无效的符号索引13  / usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位19具有无效的符号索引21  / usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_line):重定位0具有无效的符号索引2  /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o:在函数`_start'中:  (.text + 0x20):对'main'的未定义引用  collect2:错误:ld返回1退出状态 

错误背后的原因是什么?

    在C中, static是“隐藏”实现细节的主要方式。 在C中标记函数或变量static意味着将其可见性限制为定义它的转换单元。 实质上,只有同一个C文件中的函数才能引用它们。 其他文件或库中的函数无法访问它们。

    因为函数main需要从你的环境的启动代码(一段代码“引导你的程序执行”)中访问,所以隐藏它会使你的程序不可链接:编译器试图找到main ,但它是隐藏的,所以链接器发出错误。

    它显示错误,因为您的程序中没有正确的主函数。 main()在C和C ++中都不能是静态的。 static存储说明符表示该函数仅在此转换单元中可见,并且C运行时环境无法访问它:

     prog.c:3:12: warning: 'main' is normally a non-static function [-Wmain] static int main() ^ prog.c:3:12: warning: 'main' defined but not used [-Wunused-function] /usr/lib/gcc/i586-linux-gnu/4.9/../../../i386-linux-gnu/crt1.o: In function `_start': (.text+0x18): undefined reference to `main' collect2: error: ld returned 1 exit status 

    static int main()在C或C ++中都不是正确的签名。 C ++中main签名

     int main() { / ... / } int main(int argc, char* argv[]) { / ... / } 

    在C.

     int main(void) { / ... / } int main(int argc, char* argv[]) { / ... / } 

      以上就是c/c++开发分享为什么带有静态main()类型的程序显示错误?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/546008.html

      (0)
      上一篇 2021年1月10日
      下一篇 2021年1月10日

      精彩推荐