本节书摘来自华章计算机《C语言编程魔法书:基于C11标准》一书中的第3章,第3.2节,作者 陈轶

3.2 macOS系统下搭建C语言编程环境

macOS系统也不默认自带C语言编译器。然而,用户可以自己去Mac App Store免费下载macOS下的强大开发工具——Xcode:https://itunes.apple.com/cn/app/xcode/id497799835?mt=12 。该集成开发工具采用Apple定制版本的Clang编译器,称为Apple LLVM编译器。它自带C、C++、Objective-C以及Apple自己新推出的Swift编程语言编译器,还有一系列功能强大的代码静态分析以及性能剖析工具。

下载完Xcode之后,把它打开。如果是第一次启动,Xcode会自动更新一些资源,完了之后弹出主界面,如图3-25所示。

我们选择第二个选项,点击它即可创建应用程序工程。第一个选项仅用于操练把玩Swift编程语言,而第二个选项用于创建真正的应用或库。当然,有些应用可直接提交到App Store审核,有些则不行。

点击“Create a new Xcode project”之后,出现图3-26所示的对话框。在图3-26中,我们看到在上面一栏中所选的项目工程为macOS的应用。然后在下边,我们选择“Command Line Tool”,即命令行工具。最左边的Cocoa Application用于创建macOS系统上基于GUI以及沙盒机制的应用,它可以上传到Mac App Store。中间的“Game”专门用于游戏应用,也可上传到Mac App Store。而最右边的“Command Line Tool”构建出来的应用则无法上传到Mac App Store,但是它能访问macOS的整个文件系统,并且没有采用沙盒机制。另外,开发者用Command Line Tool开发出来的应用也可以直接放到网上供其他人下载使用。

c语言编辑器 ios系统 c语言编译器苹果版_xcode

c语言编辑器 ios系统 c语言编译器苹果版_开发工具_02

我们点击“Next”按钮之后出现如图3-27所示的对话框。在第1行用英文输入自己的产品名称,这个后面将用于自动生成的工程名称。然后第2行填写组织名。第3行填写组织标识,格式为com.<公司名>.<产品名>。当然,第2、第3行对于我们的demo而言可以随意填写。第5行我们要选择C,表示使用C语言。

c语言编辑器 ios系统 c语言编译器苹果版_c语言编辑器 ios系统_03

点击“Next”按钮可看到图3-28所示的目录选择对话框。

c语言编辑器 ios系统 c语言编译器苹果版_开发工具_04

这里选择将新创建的项目工程放到哪个目录下。另外,这里要注意的是,我们不要勾选“Create Git repository”这一选项。因为它会在工程本地做git版本管理,对于我们一般应用而言没有任何必要,而且这会随着工程构建的次数增多而增大,很占磁盘空间。而且如果要将本地工程拷贝到其他环境,也会带来许多不便。我们最后点击“Create”按钮之后,工程就会被创建好。

工程被创建完之后,Xcode默认会打开,包括会自动创建一个main.c的C语言源文件。此时,我们不用着急编辑、运行,可以先设置一下编译选项。

我们首先点击蓝色的“CDemo”项目工程图标,然后点击中间一栏“TARGETS”下的“CDemo”控制台图标,最后在右边栏的最上方选中“Build Settings”,然后在下面选中“All”和“Combined”。随后,我们找到“Apple LLVM x.x-Language”这一栏,将“C Language Dialect”选为gnu11,这个选项将贯穿本书内容。到此,我们的C语言编译选项就设定好了,如图3-29所示。

c语言编辑器 ios系统 c语言编译器苹果版_开发工具_05

如果我们想对最终生成的代码再做一些优化,可以设置图3-30中的一些选项。

c语言编辑器 ios系统 c语言编译器苹果版_c语言编辑器 ios系统_06

我们将C++的异常以及运行时类型(RTTI)全都关闭,另外也将Objective-C的异常关闭。这样,最终的应用程序中将不会包含异常栈,同时,编译器后端优化也能更省力不少。大家可以观察到,将这几个选项关闭后,最终生成的可执行文件会比开启时要小一些。

最后,我们可以设置一下Xcode自身的偏好设置,将行号显示出来,如图3-31所示。

c语言编辑器 ios系统 c语言编译器苹果版_App_07

我们在菜单栏上,选择“Xcode”,然后点击“Pre-ferences...”,弹出图3-32所示的对话框。我们把“Line numbers”勾选上即可在文本编辑框中看到行号。另外,Xcode默认字符编码已经是UTF-8了,因此不需要我们做额外的设置。

c语言编辑器 ios系统 c语言编译器苹果版_App_08

由于Xcode默认字体可能会显得比较小,因此如果想设置字体以及背景颜色的话可以选择“Fonts & Colors”选项。

在进入到此对话框后,我们点击左侧栏下边的“+”号,添加一个新的字体,并且选择“Duplicate‘Default’”,如图3-33所示。这使得我们所新增的字体以默认字体和颜色作为基准,然后对它做大小修改。

c语言编辑器 ios系统 c语言编译器苹果版_c语言编辑器 ios系统_09

如图3-34所示,我们这里新增了一个叫“Defualt_Big”的字体,然后在中间这栏,我们先选中“Plain Text”,然后将滚动条滚动到最下方,按住Shift键再选中最后一条“Other Preprocessor Macros”,这样可以将所有种类的文字格式全都选中,随后我们点击“T”字样的按钮来调整这些文字格式的字体大小。这里,原先的字体大小为“Menlo Regular-11.0”,设置之后这里变为“Menlo Regular-14.0”。

c语言编辑器 ios系统 c语言编译器苹果版_App_10

现在,我们就可以直接运行Xcode自动帮我们生成好的main.c中的C源代码了。我们直接点击右上角的三角箭头按钮即可编译并运行这段代码,如图3-35所示。

c语言编辑器 ios系统 c语言编译器苹果版_App_11

我们在下面的调试控制台中能看到图3-35这两行文字。其中,最后一句是应用退出后系统自动打印的。我们可以看到,macOS下能非常轻松地直接输出中文,而不需要各种复杂的编码转换。

c语言编辑器 ios系统 c语言编译器苹果版_xcode_12