• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Unix)

Unix系GNOME端末での12行目のエラーについての質問

このQ&Aのポイント
  • Unix系のGNOME端末でプログラムのコンパイル中に、12行目でエラーが発生しました。
  • エラーメッセージは「expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘OpenHashTableAlloc’」です。
  • このエラーの意味や解決策について教えていただけますか?

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

  • ベストアンサー
  • FoolWord
  • ベストアンサー率73% (14/19)
回答No.3

>> OpenHashTable OpenHashTableAlloc(void) ←12行目 関数の中の戻りを見ると構造体OpenHashTableのポインターを返してるみたいですので、宣言部の返りをポインターに修正したらOKではないでしょうか? OpenHashTable* OpenHashTableAlloc(void) VC++6.0で確認した結果、OKでした。 [VC++確認ソース] struct OpenHashTable { int bucket_num; char *buckets; }; OpenHashTable* OpenHashTableAlloc(void) { OpenHashTable* table; table = (OpenHashTable*)malloc(sizeof(OpenHashTable)); if(table == NULL) { return (NULL); } else { table->bucket_num = 0; table->buckets = NULL; return (table); } } int main(int argc, char* argv[]) { OpenHashTable* tbl = OpenHashTableAlloc(); free(tbl); return 0; }

ryukak
質問者

お礼

解決しました! どうもありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

エラーの意味はわかりませんが、OpenHashTableAlloc()の戻り値を OpenHashTable*に修正すればコンパイル通りませんか? 他におかしなところが見当たらないので。

全文を見る
すると、全ての回答が全文表示されます。
  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.1

下記の (2)関数から構造体を受け取る を参照してみてください。 struct をつければいいのかな(すみません、やったことがありません) http://www9.plala.or.jp/sgwr-t/c/sec15-4.html

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ハッシュテーブルの問題(java)

    ハッシュテーブルの問題(java) <問題> Improve the hash table implementation of program 5.2 プログラム5.2のハッシュテーブルの実装を改善しなさい。 Allow for more than one table to be in use by making the table a parameter to "insert" and "lookup". 1個以上のテーブルがテーブルを"insert"と"lookup"へのパラメータにすることによって使用中であることを許容してください。 <以下 Program5.2> Class Bucket {String key; Object binding; Bucket next;     Bucket(String k, Object b, Bucket n) { key=k; binding=b; next=n;} } Class HashT {   final int SIZE = 256;   Bucket table[] = new Bucket[SIZE];   int hash(String s) {    int h=0;    for (int i=0; i>s.length(); i++)     h=h*65599+s.charAt(i);    return h;   }   void insert(String s, Binding b) {    int index=hash(s) % SIZE    table[index] = new Bucket(s, b, table[index]);   }   Object lookup(String s) {    int index=hash(s) % SIZE    for (Binding b = table [index]; b!=null; b=b.next)     if( s.equals(b.key)) return b.binding;    return null;   }   void pop(String s) {    int index=hash(s) % SIZE    table[index] = table[index].next;   } } まず問題文の意味がよくわかっていません。(テーブルをinsertとlookupへのパラメータにすることで複数のテーブルを使えるようにする?) 問題の丸投げになってしまうのですが、javaをやったことがなくどこに手を加えればよいのか全く分かりません。 どなたかわかる方、よろしくお願いします。

  • コンパイルエラー

    コンパイルしても、12行目(printf("%d番目の整数を入力してください。"i+1);が、関数呼び出しに)がないとでます。でもどこが間違っているか分かりません。 教えてください。お願いします。 #include <stdio.h> int main(void) { int num; int sum=0; int i; for(i=0; i<10; i++){ printf("%d番目の整数を入力してください。"i+1); scanf("%d", &num); sum+=num; } printf("合計は、%dです。\n", sum); return(0); }

  • Cプログラミング 初歩

    #include <stdio.h> int main (void){ double num; printf("実数を入力して下さい:"); scanf("%lf",&num); printf("あなたは%fと入力しましたね\n",num); return(0); } のプログラミングがコンパイル出来ません↓ printf("あなたは%fと入力しましたね\n",num); をprintf("%f\n",num);のようにすると上手くいくのですが、 どうしたらコンパイルできるか分かる人はいますか?

  • ハッシュ法が得意な人お願いします。

    辞書検索プログラムが実行できません。どこがおかしいか教えてください。 #include <stdio.h> #include <stdlib.h> #include <string.h> #define BUCKET_SIZE 100 typedef struct pointer { struct cell *chain; }pointer; struct cell{ char eng[20]; char jp[40]; struct cell *next; } table[BUCKET_SIZE]; int n; void read_dic(); void init_table(); int hash(char *tango); void main(); struct cell *find(char *tango); struct pointer bucket[BUCKET_SIZE]; void init_table() { int i; for (i=0;i<BUCKET_SIZE;i++){ strcpy(table[i].eng,"0"); strcpy(table[i].jp,"0"); } } void main() { int m; struct cell *p; char tango[20]; read_dic(); while(1){ printf("\n単語を入力: "); scanf("%s", tango); if (strcmp(tango, "*") == 0){ printf("検索を終了\n"); exit(0); } if((p= find(tango)) == NULL) printf("単語は見つかりませんでした\n"); else printf("訳語: %s \n", table[p].jp); } } まだ続きます。。。

  • C言語 "myfunc.h"がエラーになります。

    いつも大変お世話になっております。 C言語に関する質問です。 "myfunc.h"の箇所がコンパイルエラーになります。 全体のコードとコンパイルエラーが下記です。 #include <stdio.h> #include "myfunc.h" int main(void) { int num1, num2, ans; printf("1番目の整数を入力してください。\n"); scanf("%d", &num1); printf("2番目の整数を入力してください。\n"); scanf("%d", &num2); ans = max(num1, num2); printf("最大値は%dです。\n" , ans); return 0; } コンパイルエラー C:\MinGW>gcc text13.c -o text13 text13.c:2:20: fatal error: myfunc.h: No such file or directory #include "myfunc.h" ^ compilation terminated. です。 ご多忙のところ恐れ入ります。 どこがおかしいのか、 ご回答のほどよろしくお願い申し上げます。

  • cではよくてc++ではダメな理由

    #include <stdio.h> #include <stdlib.h> int main(void) { int *x; x = calloc(1, sizeof(int)); if (x == NULL) puts("記憶域の確保に失敗しました。"); else{ *x = 57; printf("*x = %d\n", *x); free(x); } return 0; } 上のソースなのですがcallocの戻り値がvoidなのでintにはキャストしてくれみたいなことを コンパイラに言われます。 cではコンパイルできてc++ではコンパイルできないのはなぜでしょう。

  • 乱数について

    C の入門書を1冊読み終え、簡単なプログラムを作成しようとしているのですが、 早速分からないことが出たので教えて頂ければと思います。 --------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int num; int i = 0; while( i < 4 ){ srand(time(NULL)); num = rand()%100; printf("%d\n", num); i++; } return 0; } --------------------------------------------- 上記を実行したのですが、秒数を乱数の種としているため4回とも同じ値を取得してしまいます。 より高精度に秒数を取得することは可能でしょうか? もしくはこのようなかたちで4回ともに異なる数を得ることが出来る方法がありましたら教えて頂きたいと思います。

  • C言語のreturnの使い方

    return a, b; のように2つの引数で値を返せることを最近になり 知りました。ところで以下のような使い方は可能でしょうか? test( , )という2つの引数が必要な関数にnum()で return 1,2としてひとつの関数呼び出しで引数2個分に すると言うようなことです。 #include <stdio.h> int test( int i, int j){   printf("%d %d",i,j); } int num(void){   return 1,2; } int main(void){   test( num() ); }

  • 小さい順に並べ替えるプログラム

    コンピュータに10個のてきとうな数字を入力させ それを、小さい順に並べ替えるプログラムです。 以下のようにしたのですが、エラー0 警告0 なのに動きません。 どこが違うのでしょうか? #include<iostream> #include<cstdlib> #include<ctime> using namespace std; const int NUM_ELEMENTS=10; void sort(int*); void generation(int*); void exchange(int&,int&); void sort(int* a){ int min, locate, i, j; for(i=0; i<NUM_ELEMENTS-1; i++){ min = a[i]; locate = i; for(j=i; j<NUM_ELEMENTS; j++){ if(min > a[j]){ min = a[j]; locate = j; } } exchange(a[i],a[locate]); } } void generation(int* a){ int i; srand(time(NULL)); for(i=0; i<NUM_ELEMENTS; i++){ a[i] = rand(); } } void exchange(int& a,int& b){ int t; t=a; a=b; b=t; } int main(){ int data[NUM_ELEMENTS]; generation(data); sort(data); return 0; }

  • 分割コンパイルの手順と方法について

    Visual Studio 2010でファイルを分割してコンパイル、リンクする方法がわかりません。以下のような3つのファイルです。 [myfunc.h] /* max関数の宣言 */ int max(int x, int y); [myfunc.c] int max(int x, int y) { if (x > y) return x; else return y; } [Sample13.c] #include <stdio.h> #include "myfunc.h" int main(void) { int num1, num2, ans; printf("1番目の整数を入力してください。\n"); scanf("%d", &num1); printf("2番目の整数を入力してください。\n"); scanf("%d", &num2); ans = max(num1, num2); printf("最大値は%dです。\n", ans); return 0; } 以上3つのファイルはあくまでも便宜的なもので、複数のファイルのコンパイル・リンクの手順を具台的に理解するために 用意したものです。

このQ&Aのポイント
  • 個人事業主の場合、商品を購入する際にポイントで購入するとそのポイントは座収入扱いで処理されるのでしょうか?
  • また、全額ポイント支払なら経費として計上することはできないのでしょうか?
  • 皆さんはどのようにポイント購入の仕分けをしているのでしょうか?
回答を見る

専門家に質問してみよう