如何写好 C main 函数

Erik O'shaughnessy 的头像

·

·

·

9,580 次阅读

学习如何构造一个 C 文件并编写一个 C main 函数来成功地处理命令行参数。

我知道,现在孩子们用 Python 和 JavaScript 编写他们的疯狂“应用程序”。但是不要这么快就否定 C 语言 —— 它能够提供很多东西,并且简洁。如果你需要速度,用 C 语言编写可能就是你的答案。如果你正在寻找稳定的职业或者想学习如何捕获空指针解引用,C 语言也可能是你的答案!在本文中,我将解释如何构造一个 C 文件并编写一个 C main 函数来成功地处理命令行参数。

我:一个顽固的 Unix 系统程序员。

你:一个有编辑器、C 编译器,并有时间打发的人。

让我们开工吧。

一个无聊但正确的 C 程序

![Parody O’Reilly book cover, “Hating Other People’s Code”](/data/attachment/album/201906/08/211510o46awqki5uwc8rd9.png “Parody O’Reilly book cover, “Hating Other People’s Code””)

C 程序以 main() 函数开头,通常保存在名为 main.c 的文件中。

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

}

这个程序可以编译但不任何事。

$ gcc main.c
$ ./a.out -o foo -vv
$

正确但无聊。

main 函数是唯一的。

main() 函数是开始执行时所执行的程序的第一个函数,但不是第一个执行的函数。第一个函数是 _start(),它通常由 C 运行库提供,在编译程序时自动链入。此细节高度依赖于操作系统和编译器工具链,所以我假装没有提到它。

main() 函数有两个参数,通常称为 argcargv,并返回一个有符号整数。大多数 Unix 环境都希望程序在成功时返回 0(零),失败时返回 -1(负一)。

参数名称描述

via: https://opensource.com/article/19/5/how-write-good-c-main-function

作者:Erik O’Shaughnessy 选题:lujun9972 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

5 条回复

  1. 来自广东广州的 Chrome 72.0|Windows 10 用户 的头像
    来自广东广州的 Chrome 72.0|Windows 10 用户

    良好的编程习惯很重要

    来自广州
  2. 来自福建福州的 Chrome 74.0|Windows 7 用户 的头像
    来自福建福州的 Chrome 74.0|Windows 7 用户

    SYSSEGV  这个是书写错误吗, SIGSEGV  ?

    来自福州
  3. linux [Chrome 74.0|Mac 10.14] 的头像
    linux [Chrome 74.0|Mac 10.14]

    有可能不是笔误,但是我目前没找到更多资料。

    来自海口
  4. linux [Chrome 74.0|Mac 10.14] 的头像
    linux [Chrome 74.0|Mac 10.14]

    据我初步了解,此处是指 SYSSEGV 这种段错误,但是如果是说信号,则叫做  SIGSEGV。估计是作者写糊涂了。

    来自海口
  5. 来自广东深圳的 Microsoft Edge 18.18363|Windows 10 用户 的头像
    来自广东深圳的 Microsoft Edge 18.18363|Windows 10 用户

    受教了

    来自深圳

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注