2011-06-21 18 views
2

私は現在、自分のPC上で目的のCを学習しており、プログラムはコンパイルされません。これは私が得ているエラーです。 "Interface.m:In function" - [Person print] ':Interface.m:17:2:エラー:' NXConstantString 'のためのintergace宣言が見つかりません "目的Cプログラムがコンパイルされない

私はgccコンパイラを使用しています。

は、ここでタイプNSConstantStringのように@"I am %i years old and I weigh about %i pounds"など

#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; 

} 

答えて

3

リテラル文字列は、(デフォルトでは)ある私のプログラムですが、そのクラスを宣言するヘッダーファイルをインポートしていません。

#import <Foundation/NSString.h> 

を、または単にFoundationフレームワーク内のすべてのヘッダーをインポートします:

あなたは追加することができますいずれか

#import <Foundation/Foundation.h> 

編集:私はちょうどあなたが使用していることに気付きましたprintf()の引数としてのObjective-C文字列:

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); 

ます。また、Objective-Cの文字列を期待していた、NSLog()を使用することができます。

NSLog(@"I am %i years old and I weigh about %i pounds",age,weight);