该程序将输出“Hello World!”
#import <Foundation/Foundation.h>
int main(int argc, char * argv[]) {
NSLog(@"Hello World!");
}
#import
是一个预处理器指令,表示我们要将该文件中的信息导入或包含在程序中。在这种情况下,编译器会将Foundation
框架中Foundation.h
的内容复制到文件的顶部。 #import和#include之间的主要区别在于#import是“智能”的,足以不重新处理已经包含在其他#includes中的文件。
C语言文档解释了main
功能。
NSLog()
函数将打印提供给控制台的字符串以及一些调试信息。在这种情况下,我们使用Objective-C字符串文字: @"Hello World!"
。在C中,你会把它写成"Hello World!"
但是,Apple的Foundation Framework添加了NSString
类,它提供了许多有用的功能,并由NSLog使用。创建NSString
实例的最简单方法是这样的: @" string content here "
。
从技术上讲,NSLog()是Apple的Foundation Framework的一部分,实际上并不是Objective-C语言的一部分。但是,基础框架在Objective-C编程中无处不在。由于Foundation Framework不是开源的,不能在Apple开发之外使用,因此该框架的开源替代品与OPENStep和GNUStep相关联。
假设我们要编译包含单个hello.m
文件的Hello World程序,编译可执行文件的命令是:
clang -framework Foundation hello.m -o hello
然后你可以运行它:
./hello
这将输出:
Hello World!
选项是:
-framework
:指定用于编译程序的框架。由于该程序使用Foundation,因此我们包含Foundation框架。
-o
:此选项指示我们要输出程序的文件。在我们的例子中hello
。如果未指定,则默认值为a.out
。