开发者社区> 华章计算机> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

《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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《C语言编程初学者指南》一2.12 编程挑战
本节书摘来自华章出版社《C语言编程初学者指南》一书中的第2章,第2.12节,作者【美】Keith Davenport(达文波特) , M1ichael Vine(维恩),更多章节内容可以访问云栖社区“异步社区”公众号查看 2.12 编程挑战 1.假设a=5、b=1、x=10且y=5,编写一个程序,使用一个单个的printf()函数输出表达式f = (a – b)(x – y)的结果。
1488 0
《C语言编程初学者指南》一1.10 编程挑战
本节书摘来自华章出版社《C语言编程初学者指南》一书中的第1章,第1.10节,作者【美】Keith Davenport(达文波特) , M1ichael Vine(维恩),更多章节内容可以访问云栖社区“异步社区”公众号查看 1.10 编程挑战 1.学习附录B中的Vim快速指南。
1341 0
C语言及程序设计初步例程-19 字符数据及字符类型
贺老师教学链接  C语言及程序设计初步 本课讲解 字符常量 #include &lt;stdio.h&gt; int main() { char c1,c2; c1='a'; c2='b'; printf("%c %c\n", c1, c2); return 0; } 字符当数字用?!#include &lt;stdio.h&gt; int main()
1059 0
C语言及程序设计初步例程-17 赋值运算符与赋值表达式
贺老师教学链接  C语言及程序设计初步 本课讲解 赋值表达式及其值 #include &lt;stdio.h&gt; int main() { int a, b, c; printf("%d\n", (a=5)); printf("%d\n", (b=(c=6))); printf("%d %d %d\n", a, b, c); return 0; }
917 0
C语言及程序设计初步例程-16 数据的输出
贺老师教学链接  C语言及程序设计初步 本课讲解 用printf函数输出 #include &lt;stdio.h&gt; int main() { printf("Hello World!\n"); printf("Welcome\nto\nBeijing!\n"); return 0; } 用于整型数据的输出格式控制#include &lt;stdio.h&gt
1046 0
C语言及程序设计初步例程-15 数据的输入
贺老师教学链接  C语言及程序设计初步 本课讲解 不同类型数据的自然分割 #include &lt;stdio.h&gt; int main() { int a, b, c; char op; scanf("%d%c%d",&amp;a,&amp;op,&amp;b); if(op=='+') { c=a+b; printf("会算%c,结果是:%d\n
942 0
C语言及程序设计初步例程-14 指针及其运算
贺老师教学链接  C语言及程序设计初步 本课讲解 例 通过指针变量访问整型变量 #include &lt;stdio.h&gt; int main( ) { int a,b; int *p1,*p2; a=100; b=10; p1=&amp;a; p2=&amp;b; printf("%d %d\n", a, b); print
981 0
C语言及程序设计初步例程-13 数值型数据的存储原理
贺老师教学链接  C语言及程序设计初步 本课讲解 溢出初探 #include &lt;stdio.h&gt; int main() { short a, b; a= 32760; printf("a=%d\n",a); b = a + 10; printf("b=%d\n",b); return 0; } 让数学老师如何面对?C语言及程序设计初步例程#include &lt;s
968 0
C语言及程序设计初步例程-11 算术运算符与算术表达式
贺老师教学链接  C语言及程序设计初步 本课讲解 分离各位数:设 x 为一个三位整数,将其个、十、百位数分离出来(改C) #include<iostream> using namespace std; int main( ) { int x,a,b,c; cin>>x; c=x%10; b=(x/10)%10; a=x/100;/
1013 0
C语言及程序设计初步例程-8 数值数据类型及表示
贺老师教学链接  C语言及程序设计初步 本课讲解 例:程序中的数据类型、常量、变量 #include &lt;stdio.h&gt; int main( ) { float f,m; printf("length in feet: "); scanf("%f", &amp;f); m = f / 3.28; printf("equal to %f me
1023 0
文章
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
视觉计算机开发者系列手册
立即下载
15分钟打造你自己的小程序更新版
立即下载
JAVA开发手册1.5.0
立即下载