• ベストアンサー

「LOCAL」って構造体?共用体?それとも別物?

ついおととい質問したばかりで気が引けるのですが、 またわからない部分がでてきましたので、 できればご回答お願いします。 現在、他人の作ったC言語のソースを解析しているのですが、 その中に : : LOCAL int abc(x,y); void main() { : : こういった行がありました。 ぱっとみ構造体とかと同じような使われ方をされているのですが、 どう調べてみてもLOCALといった命令文がでてきません。 というわけで、 1.LOCALという命令文があるのかどうか 2.もしあるのなら具体的な使い方を、 もしないのならこれはいったい何である可能性があるのか 以上2点、ご回答よろしくおねがいします。

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

  • ベストアンサー
  • honiyon
  • ベストアンサー率37% (331/872)
回答No.1

こんにちは、honioynです。   あまりCは詳しくないので、そういう宣言の仕方があるか分からないのですが...   マニュアル調べてとってない時は、 #defineを探してみましょう。   #define LOCAL xxxxx  とあるかも知れません。   因みに単純に #define LOCAL とだけ宣言し、 LOCAL int abc(x,y);   と使用する事で、abcがローカル関数だと一目が分かるようにする、という手法があります。(この方法が有用であるかはさておき笑  参考になれば幸いです(..

Wingard
質問者

お礼

ありがとうございました。 そういった使い方があるんですね。 参考になりました♪

その他の回答 (1)

  • Paxil
  • ベストアンサー率34% (33/97)
回答No.2

#1の方への補足です。 まず、大文字で書いている点から考えて #define LOCAL static などとされているもの(マクロ定義)と想像されます。 しかし、今開いているソースファイル内を探しても、define文が見つからない かもしれません。その場合は #include"myhead.h" というように、" " でファイル名が囲まれてインクルードされているユーザ定 義ヘッダファイルを一つ一つ調べてみてください。

関連するQ&A

  • 構造体の初期設定 (C++)

    構造体の初期設定 (C++) C++言語にて以下のコードをコンパイルすると9行目でERROR(E2188 構文エラー)がでます。 【質問】  9行目をどう直せばいいのでしょうか。 -------------------------------------- struct strData{ int a; int *b; }; void main(void) { struct strData *strc; *strc = {5,(int*)6}; /* 9行目 */ } -------------------------------------- 参考書やネットで調べたのですが解説が見つかりませんでしたので。。

  • 構造体について

    構造体についての質問です。 main関数で構造体に 格納しています。 その構造体の値を 自作の関数(look)で 参照したいのですが どのようにすればいいのか ご教示して頂けたら幸いです。 typedef struct nentbl_ { int tosi; int kan; } nentbl; //--------------------------------------------------- int look(id){ nentbl kihokyu[50]; printf("%d %d\n",kihokyu[id].tosi , kihokyu[id].kan); } //---------------------------------------------------- int main(void){ nentbl kihokyu[50]; ・ ・ ・ kihokyu[1].tosi =11; kihokyu[1].kan = 20; kihokyu[2].tosi = 21; kihokyu[2].kan = 30; kihokyu[3].tosi = 31; kihokyu[3].kan = 40; y = look(1);

  • 構造体配列の初期化関数をつくる

    C言語での数値プログラミング的な質問です。 例えば, 自作関数で, =========== void shokika(int n, double *x) { int i; for(i=0;i<n;i++) x[i] = 1.0; } =========== とつくり, int main(void) { double x[10]; shokika(10,x); return 0; } とすると, x[0]~x[9]まで1.0を入れることができますが, 配列x[10]を, struct abc { double x, y; } a[10]; というように構造体の配列としてa[i].xとしたときに, 上記のshokika関数の同等の処理をしてくれる (つまり, a[0].x=...=a[9].x=1.0と処理する) 自作関数をつくりたいのですが、どうしたらいいでしょうか。

  • C言語の構造体にてバブルソートが上手くいきません‥

    C言語の構造体にてバブルソートが上手くいきません‥ 初めて質問致します。 以下は、構造体で、身長順にバブルソートを行うソース文ですが、 結果表示が、最下部に示したように、 5つのレコードのうち1つが消えてしまい、 残った4つのレコードのうちの1つが重複されて表示されてしまいます。 これが、なかなか解決できません‥。 既に結構調べており、また、早く解決できないといけないこともあり、 すみませんが、回答の形式でお願いできますと大変幸いです。 何卒よろしくお願い致します。 #include<stdio.h> #include<string.h> typedef struct kojin { char name[21]; int length; int weight; }KOJIN; int main(void) { int i, c, j; char buf[4]; KOJIN data[10]; KOJIN *d; printf(

  • 構造体の纏め方

    関数のポインタを使用して、 /* プロトタイプ宣言 */ void func1 ( void ); void func2 ( void ); void func3 ( void ); /*******************/ /* プロトタイプ纏める */ void ( *funcs[] ) ( void ) = { func1, func2, func3 }; /*********************/ と言うのが、構造体でも出来ないでしょうか?と言うのが質問です。 変数(添字)によって、見るべき構造体を自由に変更させたいと言うのが主な使用方法です。 typedef struct _tag { int arg1; int arg2; } tag; tag watch1 , watch2 , watch3; とある変数が1なら、watch1、とある変数が2なら、watch2、とある変数が3なら、watch3を見ると言うようなプログラムにしたくて、質問しました。 witch文を使うしかないのでしょうか? 良き回答、お待ちしています。

  • javaのローカル変数について

    基本的なことの質問ですがよろしくお願いいたします。 下記の様なソースコードでint y ;はローカル変数にあたると思いますが 確かローカル変数は初期化されないとコンパイルエラーになるはずなのですが どうもコンパイルも実行もできます。 どうしてでしょうか? よろしくお願いいたします。 class Test1{ static int x = 0; } public class Test extends Test1{ public static void main(String args[]){ Test i = new Test(); int y ; y = ++x; System.out.println( y ) ; } }

    • ベストアンサー
    • Java
  • 分割コンパイル時に構造体....

    レベルの低い質問とは思いますが struct st { int a; int b; }; void a(struct st *ST) { ST->a=1; ST->b=1; } void main() { struct st ST; a(&ST); printf("%d%d",ST.a,ST.b); getch(); } これだと問題なく動作するのですが、ソースファイルを分割して ソース1 void a(struct st *ST); struct st { int a; int b; }; void main() { struct st ST; a(&ST); printf("%d%d",ST.a,ST.b); getch(); } ソース2 void a(struct st *ST) { ST->a=1; ST->b=1; } だとエラーが返ってくるのがなぜなのか解りません ソース2でも同じ構造体の宣言をしなければならないのでしょうか。 長くなり読みにくくなってしまいましたが、よろしくお願いします。

  • 構造体について

    私は今プログラミング(C++)を勉強しているのですが、構造体に苦戦しています。分からないことがいくつかあります。もし知っていたらどれでもいいですので、よろしければ教えてください。 1、たとえば構造体を宣言するときに struct abc{ int s; struct abc xx; struct abc yy; }; と宣言するときがあります。でも上記の例と下記の例との違いが分かりません。 struct abc{ int s; struct abc xx; struct abc yy; }abc; 2、たとえばメインの最初にこのように宣言されているとします。 int j, i; struct abc *kk, *nn, *mm; これはここに宣言したものがローカルで、1のときに宣言したものがグローバルと考えていいのでしょうか? 3、メインの中に次のようなプログラムがあったとします。 kk->xx = j; kk->yy = j; nn->yy = NULL; i = kk->xx; i = kk; これらがそれぞれどのような意味があるのでしょうか。 これらでわかることがあればぜひ教えてください。よろしくお願いいたします。

  • 構造体宣言 エラー

    下記の構造体の宣言で struct table{ int hour, minute, second; }; void main(void){ table t; t = { 8,25,0}; のように書くとエラーが出てしまい、 void main(void){ table t ={ 8,25,0}; とすると問題ありません。 テキストをいろいろ読みましたが、納得できる理由を教えてください。

  • Cのローカル変数でstatic以外の使い方?

    C言語の課題について教えてください [課題] 以下の関数がある。各関数の引数、変数は自由に設定していい ・int main() ・void func() ・Point *get() { /* 構造体のアドレスを返す */ } ・構造体 typedef struct { int x; int y; int h; int w; }Point; 問題 main関数から、func関数を経由して、get関数を経由し値を取得し、表示する 以下が考えたソースになりますが、これだと、 ローカル変数でstaticを使っているので、get関数が固定値ではなく、 取得のたびに値が変わるような場合には、だめだといわれました。 考えたのですがよくわからないので、どういう場合に駄目なのかと、 どのように修正すればいいのか教えてください。 #include <stdio.h> typedef struct { int x; int y; int h; int w; }Point; void func(Point **); Point *get(); int main(void){ Point *get; func(&get); printf("get.x:[%d]\n",get->x); printf("get.y:[%d]\n",get->y); printf("get.h:[%d]\n",get->h); printf("get.w:[%d]\n",get->w); return 0; } void func(Point **pw){ *pw = get(); printf("Wrapper: pw==%p\n",pw); } Point *get(void) { static Point pget; pget.x = 2; pget.y = 2; pget.h = 30; pget.w = 40; return &pget; }

専門家に質問してみよう