我想在Xcode iOS/Objective-C项目中使用单独的C头文件和实现文件。
我想用我的main.m实施的方法,但我得到这些错误:在Xcode中使用C头文件和实现文件iOS项目
我在main.m文件包含user.h
请注意,目标会员在user.c中为HelloWorld选择。当我取消选择时,错误消失了。但是,当我尝试运行应用程序,我在编译的时候得到这些错误:
Full size here
当我实现main.m文件的结构和方法,它编译和运行就好了。但我不明白为什么我不能在一个单独的文件中使用这个特定的代码?
源代码:
user.h
#ifndef HelloWorld_user_h
#define HelloWorld_user_h
typedef struct {
char *name;
int age;
char sex;
} User; //sizeof(User) = 16 bytes
void CreateAndDisplay(User *usr, char *name, int age, char sex);
#endif
user.c的
#include <stdio.h>
#include <stdlib.h>
void CreateAndDisplay(User *usr, char *name, int age, char sex) {
usr->name = name;
usr->age = age;
usr->sex = sex;
printf("User address -> value:\n");
printf("Name:\t%u\t->\t%s\n", (uint)usr, *&usr->name);
printf("Age:\t%u\t->\t%i\n", (uint)&usr->age, *&usr->age);
printf("Sex:\t%u\t->\t%c\n\n", (uint)&usr->sex, *&usr->sex);
printf("User has a size of %li bytes in memory", sizeof(*usr));
}
的main.m
#import <UIKit/UIKit.h>
#import "HelloWorldAppDelegate.h"
#include <stdio.h>
#include <stdlib.h>
#include "user.h"
int main(int argc, char *argv[])
{
User user1;
CreateAndDisplay(&user1, "John Doe", 24, 'm');
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([HelloWorldAppDelegate class]));
}
}
你[屏幕快照]只是来看(http://puu.sh/44eMG.png),你可能会想尝试'的#include“ 'user.c'中的user.h“'。看一下'user.c'的'#include'文件列表。所有这些都是'#include'所以难怪编译器不知道'User'是什么。 –
WhozCraig
@QuantumHive我将你的屏幕截图直接移动到了你的文章中。将来,请将代码置于代码块中,因为这会让您的问题独立出来,并且更容易让其他人自行编译,测试和编辑代码。谢谢! –
对不起,我现在将添加代码。 – QuantumHive