• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Objective-cで@"Foo"が使えない)

Objective-cで@"Foo"が使えない

このQ&Aのポイント
  • Objective-cの環境で@"Foo"を使用するとエラーが発生する原因について質問します。
  • Ubuntu10.04+clang+gnustep環境で@を使ってNSStringインスタンスを生成しようとするとエラーが発生します。
  • コンパイルではエラーが出ず、実行時にエラーが発生し、具体的な原因がわかりません。どのような環境で@が利用できるのか、他のブログなどで使えると書かれているのに自分が使えない理由がわかりません。ヒントを教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.1

こんばんは。 Ubuntu10.10 に clang、GNUstep、Objective-Cをインストールして みましたが、問題なくコンパイルできますね。 不足しているパッケージが無いか確認してみてはいかがでしょう。 【サンプルソース】 #import <Foundation/Foundation.h> int main(int argc, const char* argv[]) {  NSString *str1 = @"Hello GNUStep";  NSLog(@"%@", str1);  NSString *str2 = [[NSString alloc] initWithUTF8String:"Hello Objective-C"];  NSLog(@"%@", str2);  return 0; } 【コンパイル方法】 $ gcc -lobjc -lgnustep-base -I/usr/lib/gcc/i686-linux-gnu/4.4/include -I/usr/include/GNUstep -fconstant-string-class=NSConstantString oshiete.m または、 $ clang -lobjc -lgnustep-base -I/usr/lib/gcc/i686-linux-gnu/4.4/include -I/usr/include/GNUstep -fconstant-string-class=NSConstantString oshiete.m (オプションは同じです。コマンドが違うだけです。) 【実行】 $ ./a.out 2010-12-26 00:21:53.287 a.out[16348] Hello GNUStep 2010-12-26 00:21:53.289 a.out[16348] Hello Objective-C

jjk65536
質問者

お礼

ありがとうございます。 差は「-fconstant-string-class=NSConstantString」のようですね。 手元で追加してみたところ、無事動作しました。 constant-string-classで@指定時にどのクラスオブジェクトを生成するか 指定することができて、デフォルトはNXConstantStringのようですね。 gccの場合は。 clangの場合はなんだか分からなかったですが、コンパイルは通るものの 実行時にセグメンテーションフォルトになるような何らかのクラスが デフォルトなのでしょうね。 分かり難っ! わざわざインストールまでして確認していただいてありがとうございました。 おかげ様で無事解決です。

関連するQ&A

専門家に質問してみよう