xcode编译控制台应用程序--c编程

时间:2010-06-17 03:35:54

标签: c iphone xcode programming-languages

是否可以使用Xcode使用iPhone 3.1.3 SDK编译可在iphone上运行的标准C程序?我正在尝试使用xcode编译一个基本的“hello world”,但无济于事。我是否需要获取其他应用程序模板,或者我只是缺少某些内容?

4 个答案:

答案 0 :(得分:2)

如果你将锅炉板模板用于cocoa应用程序,它使用NSApplicationMain以及快速启动cocoa程序所需的一些其他结构,那么你可以自由地开始编写C方法而无需点击objective-c。注意事项:

1)出于测试目的,看起来,当使用xcode时,最好的办法是从新项目的iphone类别下提供的“基于窗口的应用程序”模板开始。它是一个没有UI的最小模板 - 只是一个窗口。

2)iphone中没有“main()”。您必须将代码放在“AppDelegate.m”文件中,该文件实际上是“[YourProjectName] AppDelegate.m”。在这里你会找到一个方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    //YOUR CODE GOES HERE

    return YES;
}

这是调用您编写的C函数的好地方,您可以在该源文件中执行,或者更好,在#import的单独文件中执行。请注意,应用程序将阻止,直到所有c代码完成执行。

3)没有printf,我不相信。抱歉。获取信息的一种方法是使用NSLog - 但是期望objective-c字符串不是C字符串。因此,如果您想要实际看到C程序中的任何状态,则必须使用一小部分Objective-c。有问题的一行是:

char *your_char_pointer = //...gimme a string;
NSLog([NSString stringWithCString:your_char_pointer]);

这会将你的C字符串转换为一个Objective-C字符串,NSLog很乐意将其打印到控制台(通过在OSX上的Applications文件夹中的Utility文件夹中使用控制台应用程序看到)。

那好吗?

答案 1 :(得分:2)

如果您有越狱iPhone,请安装GCC和其他要求(请参阅本页http://antirez.com/page/iphone-gcc-guide.html)。使用gcc

在设备上编译代码
#include <stdio.h>

int main(void)
{
  printf("Hello World\n");
  return 0;
}

使用终端编译

gcc -c main.c -o hello.o

ld hello.o -e _main -o Hello

请记住,已编译的应用程序是本机控制台应用程序,不支持UI,因此只能从终端运行。

答案 2 :(得分:0)

iPhone并未正式支持控制台应用程序。

答案 3 :(得分:0)

我确定这可能是一个粗鲁的答案,但你想看看:'iPhone编程:大书呆子牧场指南'。我自己完成了这本书,它是一个很好的资源。

您当然可以使用XCode编译标准C程序并将“Hello World”输出到控制台。但是,您没有提到是否要在iPhone / iPad / iPod Touch上运行此程序。

如果您只是想学习Cocoa并且不想在iPhone上运行它,请查看姐妹书:'Cocoa®ProgramforMac®OSX(第3版)'。