《C语言编程魔法书:基于C11标准》——3.2 macOS系统下搭建C语言编程环境

简介:

本节书摘来自华章计算机《C语言编程魔法书:基于C11标准》一书中的第3章,第3.2节,作者: 陈轶 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

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

macOS系统也不默认自带C语言编译器。然而,用户可以自己去Mac App Store免费下载macOS下的强大开发工具——Xcode。该集成开发工具采用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开发出来的应用也可以直接放到网上供其他人下载使用。


112b4bc918b477fd12b42a53812b75611f6e0fa2

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


4eaf2b582a6bd21a09aeae48472b12d453403adf

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


deedb16761bc1e651f1e31f87e44ff8f340de3cf

这里选择将新创建的项目工程放到哪个目录下。另外,这里要注意的是,我们不要勾选“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所示。


<a href=https://yqfile.alicdn.com/4d26fceaf4b759423accf76d04233905cd559cce.png" >

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


<a href=https://yqfile.alicdn.com/64ec1d9dcf0d412cec5f29e6f145492cb3f9cdda.png" >

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


<a href=https://yqfile.alicdn.com/357b44f5b0fafa745779c3cfdf8a08884eb090db.png" >

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


83b7d1a1f692f332a5b19bb18476fa842a5b00a6

由于Xcode默认字体可能会显得比较小,因此如果想设置字体以及背景颜色的话可以选择“Fonts & Colors”选项。
在进入到此对话框后,我们点击左侧栏下边的“+”号,添加一个新的字体,并且选择“Duplicate‘Default’”,如图3-33所示。这使得我们所新增的字体以默认字体和颜色作为基准,然后对它做大小修改。


c24f8cc83c23e41c74950b288f7ec5643c19c629

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


93dbfd920ae37be4d565624b91f745885e2a9f19

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


012aa31dd437b61199767e9f4370d5ec9ce95eaa

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


8f1c8f0c1c24a7830ef4cc6023c1d59dd28b7861
相关文章
|
18天前
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
40 8
|
22天前
|
C语言
C语言编程中,错误处理至关重要,能提升程序的健壮性和可靠性
C语言编程中,错误处理至关重要,能提升程序的健壮性和可靠性。本文探讨了C语言中的错误类型(如语法错误、运行时错误)、基本处理方法(如返回值、全局变量、自定义异常处理)、常见策略(如检查返回值、设置标志位、记录错误信息)及错误处理函数(如perror、strerror)。强调了不忽略错误、保持处理一致性及避免过度处理的重要性,并通过文件操作和网络编程实例展示了错误处理的应用。
56 4
|
2月前
|
iOS开发 MacOS
MacOS环境-手写操作系统-40-进程消息通讯 和 回车键处理
MacOS环境-手写操作系统-40-进程消息通讯 和 回车键处理
27 2
|
2月前
|
Web App开发 Shell Linux
MacOS环境-手写操作系统-41-mem 第一个控制台程序
MacOS环境-手写操作系统-41-mem 第一个控制台程序
20 1
|
2月前
|
iOS开发 MacOS
MacOS环境-手写操作系统-37-切换窗口 键盘输入
MacOS环境-手写操作系统-37-切换窗口 键盘输入
62 1
|
2月前
|
iOS开发 MacOS
MacOS环境-手写操作系统-36-Tab键切换窗口
MacOS环境-手写操作系统-36-Tab键切换窗口
62 1
|
2月前
|
存储 C语言 iOS开发
MacOS环境-手写操作系统-48-让内核从错误中恢复
MacOS环境-手写操作系统-48-让内核从错误中恢复
42 0
|
2月前
|
存储 API C语言
MacOS环境-手写操作系统-46,47-C语言开发应用程序
MacOS环境-手写操作系统-46,47-C语言开发应用程序
40 0
|
2月前
|
编译器 API C语言
MacOS环境-手写操作系统-45-C语言开发应用程序
MacOS环境-手写操作系统-45-C语言开发应用程序
54 0
|
2月前
|
小程序 iOS开发 MacOS
MacOS环境-手写操作系统-44-运行简单的程序
MacOS环境-手写操作系统-44-运行简单的程序
27 0
下一篇
DataWorks