gpt4 book ai didi

objective-c - Objective C 程序未编译

转载 作者:行者123 更新时间:2023-12-04 06:22:12 26 4
gpt4 key购买 nike

我目前正在我的电脑上学习 objective-c ,我的程序无法编译。这是我得到的错误。 “Interface.m:在函数'-[Person print]'中:Interface.m:17:2:error:找不到'NXConstantString'的接口(interface)声明”

我正在使用 gcc 编译器。

这是我的程序

 #import <Foundation/NSObject.h>
#import <stdio.h>

@interface Person : NSObject {
int age;
int weight;
}

-(void) print;
-(void) setAge: (int) a;
-(void) setWeight: (int) w;

@end

@implementation Person
-(void) print {
printf(@"I am %i years old and I weigh about %i pounds",age,weight);
}
-(void) setAge: (int) a{
age = a;
}
-(void) setWeight: (int) w{
weight = w;
}
@end

int main(int argc, char * argv[]){

Person *person;

person = [Person alloc];
person = [person init];

[person setAge: 16];
[person setWeight: 120];
[person print];
[person release];

return 0;

}

最佳答案

文字字符串,例如 @"I am %i years old and I weigh about %i pounds"是(默认)类型NSConstantString但是您没有导入声明该类的头文件。

您可以添加:

#import <Foundation/NSString.h>

或者简单地导入 Foundation 框架中的所有 header :
#import <Foundation/Foundation.h>

编辑:我刚刚注意到您使用 Objective-C 字符串作为 printf() 的参数。 :
printf(@"I am %i years old and I weigh about %i pounds",age,weight);

那是不对的; printf()需要一个 C 字符串,例如:
printf("I am %i years old and I weigh about %i pounds",age,weight);

您也可以使用 NSLog() ,它确实需要一个 Objective-C 字符串:
NSLog(@"I am %i years old and I weigh about %i pounds",age,weight);

关于objective-c - Objective C 程序未编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6419383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com