我目前正在从哈佛的一些截屏中学习C语言。他们很棒。我现在,因为我已经习惯了,使用这个过程来运行我的代码:
我在这里缺少一个重要的流程,程序或最佳实践吗?我在TextMate中尝试过apple-R,但是要编译像...这样的简单的东西
#include <stdio.h>
int
main(int argc, char * argv[])
{
int x = 342;
int y = 92;
int z = x + y;
printf("these values added are: %d\n", z);
return 0;
}
......需要4秒,这显然不太好。是否有一个很好的环境/编译器快捷方式,或者我可以采取的其他任何措施来使实际测试更加简化?
谢谢!
答案 0 :(得分:4)
我在终端中使用文本配合和gcc。我发现Xcode对于C中的小型命令行程序来说太笨重了。如果你想做cocoa GUI应用程序,需要一个快速的Apple API参考或想要一个图形前端到gdb等等,这很棒。对于你上面的程序,4秒听起来过多,但是这可能是由于Textmate cmd-R快捷方式。除了脚本,我从来没有用过其他任何东西。但我同意您应该安装Xcode,它位于您的Mac OS安装盘上。
答案 1 :(得分:4)
我不同意如果你想编码ANSI C那么这就是我的建议。熟悉一个更强大的文本编辑器,无论是vim,emacs还是其他什么。我更喜欢vim。
见这里:
http://macvim.org/OSX/index.php
现在,您应该尝试为Mac OS X设置GNU Make。
这样做,您将学习大多数C程序员多年来使用的方法。我认为你会比直接使用Xcode获得更多。使用Xcode,您需要确保使用C而不是Objective-C。
现在,通过像vim这样的编辑器,您可以从单个终端执行所有操作,并减少在工作流程中切换的周期。
因此,您的工作流程变为:
$ vim foo.c
(保存)
$使
$。/ a.out
如果你想做任何与UNIX环境有任何关系的严肃的C编程(我怀疑哈佛课程的确如此),你需要在某些时候学习make。
答案 2 :(得分:3)
安装Apple的开发工具,并使用XCode IDE。它可能会也可能不会增加你的编译时间,但它会大大减少手动编码和编译命令行的痛苦。
要创建一个简单的命令行C程序(如上所述),请执行以下操作:
文件 - &gt;新项目
选择Command Line Tool
作为项目类型。
该模板包含一个带有main.c文件的“hello world”程序。
编辑main.c文件以包含您正在处理的代码。
选择Build and Run按钮运行项目。
**务必打开控制台以查看程序的输出。 (运行 - &GT;控制台)
祝你好运!答案 3 :(得分:3)
如前所述,XCode是Mac的做法。
为了给您提供替代解决方案,您还可以在终端内使用vi/vim。您可以通过键入vi filename.c
首次打开该文件。然后键入:w
保存文件,:!gcc filename.c
编译文件,:!./a.out
运行文件。感叹号执行调用shell命令的技巧,因此最后两个命令可以替换为一个:!gcc filename.c; ./a.out
。按下冒号后,您还可以在 vi 中找到命令历史记录(“向上箭头”,“向下箭头”)。
习惯 vi 是另一回事......
答案 4 :(得分:2)
尝试使用 gcc -Wall -Werror 进行构建,并尝试了解并修复警告。这总是很好的做法。
答案 5 :(得分:2)
除非您需要使用调试器,否则我不建议切换到XCode。 GDB与XCode的集成非常好,并且与Textmate不存在。
要改善小型项目的Textmate工作流程,请学习使用make并安装Textmate的Makefile包。您可以在GitHub上找到它。
这将为Textmate提供一个新的Build(“Command-B”)选项,它将运行make,解析输出,并让您轻松纠正编译时错误。
答案 6 :(得分:1)
我认为你应该继续做你正在做的事情。 4秒不 等待很长时间,特别是一旦你的程序变得更加广泛。只需使用基本的文本编辑器和gcc就可以让你掌握C的基础知识。一旦你准备好开始制作GUI应用程序,那么我建议开始使用XCode来利用这些工具制作这类应用程序。我认为IDE在这一点上是过度的。
答案 7 :(得分:0)
应该将Emacs或Vim与Makefile一起使用。他们可以做任何事情。
例如,在Emacs中,编译就像M-x Compile一样简单(但当然你可以将任何键绑定到它)。 Emacs也是跨平台的(与XCode和TextMate不同)。
Emacs还提供了许多其他用于调试的功能(内置gdb支持,解析编译输出的能力等)
使用特定于IDE的构建工具是完全错误的做事方式(特别是如果该IDE恰好是特定于平台的,例如XCode和TextMate)