C言語で自作構造体を使っているがコンパイルエラーが発生する

このQ&Aのポイント
  • C言語で自作の構造体を使ってプログラムを作成していますが、コンパイルエラーが発生してしまいます。エラーの内容は、定義されていない識別子や、予期されていないトークンなどです。
  • エラーの原因を調べるために、プログラムのコードを確認しましたが、特に間違いは見つかりませんでした。構造体の定義や変数の宣言に問題があるのかもしれません。
  • 何か気が付いた点があれば、教えていただけると助かります。どうぞよろしくお願いします。
回答を見る
  • ベストアンサー

コンパイルエラーの原因がわからず困っています。

こんにちわ。いつもお世話になっております。 自分で構造体を定義して、それを使ってみたのですがコンパイルエラーが出てしまいます。何がいけないのでしょうか。 以下がそのプログラムです。 struct list { struct list *prev; struct in_addr ip_src, ip_dst; u_short th_sport; u_short th_dport; struct list *next; }; void main (u_char * args, const struct pcap_pkthdr *header, const u_char * packet) { static int count = 1; const sturct list *flow; return; } 以上です。 エラー内容は test.c: In function ‘main’: test.c:17: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘list’ test.c:17: error: ‘list’ undeclared (first use in this function) test.c:17: error: (Each undeclared identifier is reported only once test.c:17: error: for each function it appears in.) test.c:17: error: ‘flow’ undeclared (first use in this function) 以上です。 どんな些細な意見でも構いませんので、何か気が付かれたら教えて頂けないでしょうか。どうぞよろしくお願いします。

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

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

> const sturct list *flow; よーっく読んでみましょう。 それにしても斬新なmain()宣言ですねぇ……

arlstumia
質問者

お礼

main関数の中身は、ただエラー周辺を抜粋しただけなんですけどね。 ご回答有難う御座いました。

関連するQ&A

  • Apache2インストールでpcre_default_tables未定義エラー

    こんにちは、honiyonです。  RedHat LinuxにApache2をソースからインストールしようとしています。  tar xzvf で展開し、   ./configure --enable-modules=so --enable-ssl   make  としたところ、 pcre.c: In function `pcre_compile': pcre.c:2534: `pcre_default_tables' undeclared (first use in this function) pcre.c:2534: (Each undeclared identifier is reported only once  とエラーが出ました。  原因が分からなかったので、pcre-6.3.tar.gz を使って無理やり(?)コンパイルを通すと、今度は util.c: In function `ap_find_token': util.c:1456: `test_char_table' undeclared (first use in this function) util.c:1456: (Each undeclared identifier is reported only once util.c:1456: for each function it appears in.) util.c:1456: `T_HTTP_TOKEN_STOP' undeclared (first use in this function) util.c: In function `ap_escape_shell_cmd': util.c:1520: `test_char_table' undeclared (first use in this function) ...~後略~  とエラーが出ました。  Apacheのバージョンは、2.0.54と2.0.46を試していますが、同じエラーとなっています。  う~ん、何か不足しているのでしょうか?  VineLinuxで同様のmakeをした時はすんなり成功しました。  何かお気づきの点がありましたら、是非ご教示ください。  因みに、このLinuxのunameの結果は uname -s Linux uname -m i686 uname -r 2.4.20-8smp uname -v #1 SMP Thu Mar 13 17:45:54 EST 2004  gcc -v は RedHat Linux 3.2.2-5  です。  宜しくお願いします(..

  • gccですが、コンパイルができません!

    以下のプログラムですが #include <stdio.h> int main() { Int col; char i; scanf( "%d", &col ); for( i = 0 ; i < 26 ; i++ ){ if( i > 0 && ( i % col ) == 0 ) printf( "\n" ); printf( "%c", 'a' + i ); } return 0; } 以上のプログラムをgccでコンパイルしました。 コンパイルするために入力した文字→  gcc p.c -o p.exe 以下のエラーがでてコンパイルできません。 p.c: In function `main': p.c:4: error: `Int' undeclared (first use in this function) p.c:4: error: (Each undeclared identifier is reported only once p.c:4: error: for each function it appears in.) p.c:4: error: syntax error before "col" p.c:7: error: `col' undeclared (first use in this function) p.c:17:2: warning: no newline at end of file  以上なぜコンパイルができないのですか? よろしくお願いいたします。

  • エラーの対策

    インターネット上で他の方のC言語ソースコードをダウンロードした、MAKEでコンパイルしたときに、以下のエラーはでました、どうしたらいいでしょうか? gcc -pipe -ansi -c -o base.o base.c base.c: In function `Setup': base.c:535: `S_IFDIR' undeclared (first use in this function) base.c:535: (Each undeclared identifier is reported only once base.c:535: for each function it appears in.) make: *** [base.o] Error 1

  • エラーが出てコンパイルができません…

    #include<stdio.h> void main(void) { int i; i=0; while(i<3){ printf("おーい\n\"); printf(" やっほー\n\n\"); i=i+1; } printf("プログラムを終了します\"); } と本に書いてあった通りに入力したら、下のようなエラーが出てきました。 7: 文法エラー before \"i\" 9: stray \'\\\' in program 10: stray \'\\\' in program 10: 文法エラー before \"n\" 11: stray \'\\\' in program 11: 文法エラー before \"n\" 12: `i\' undeclared (first use in this function) 12: (Each undeclared identifier is reported only once 12: for each function it appears in.) トップレベル: 15: error: 文法エラー before string constant 15: conflicting types for built-in function `printf\' 15: data definition has no type or storage class 16:2: ファイル末尾に改行がありません 解決策と原因を教えて下さい。 宜しくお願い致します。

  • MinGWとmsysでGTK+の開発環境を整えたい

    WindowsXP上で、コンパイラにMinGWを用いてGTK+2.0を用いたGUIアプリケーションの開発を行いたいと思っています。 しかし、GTK+2.0のサンプルソースのコンパイルが通りません。 コマンドとそのエラーは以下の通りです。 どうもヘッダーが見つからないと言っているようですが、ヘッダーをコンパイラのincludeフォルダに入れても駄目でした。 いれたGTK+はGlade等、全てがパックになっているものでした。インストール時にmsysを認識してくれていたので、勝手に設定をしてくれるのかと思ったのですが…。 $ gcc hello_gtk.c 'pkg-config gtk+-2.0 --cflags' hello_gtk.c:1:21: gtk/gtk.h: No such file or directory hello_gtk.c: In function `main': hello_gtk.c:5: error: `GtkWidget' undeclared (first use in this function) hello_gtk.c:5: error: (Each undeclared identifier is reported only once hello_gtk.c:5: error: for each function it appears in.) hello_gtk.c:5: error: `window' undeclared (first use in this function) hello_gtk.c:6: error: `label' undeclared (first use in this function) hello_gtk.c:10: error: `GTK_WINDOW_TOPLEVEL' undeclared (first use in this function) gcc.exe: pkg-config gtk+-2.0 --cflags: No such file or directory どうすれば、コンパイルできるようになるのでしょう?

  • C++ iteator const を使ったプログラムがコンパイルできない

    以下のプログラムがコンパイルできません。 理由もよく分かりません。 ----------------- #include <algorithm> #include <list> struct Hoge { std::list<Hoge*> l; Hoge * f() const { std::list<Hoge*>::iterator i = l.begin(); return 0; } }; -------------------- g++ 4.1.1 を使っていますが % g++ -c test1.cc test1.cc: In member function 'Hoge* Hoge::f() const': test1.cc:8: error: conversion from 'std::_List_const_iterator<Hoge*>' to non-scalar type 'std::_List_iterator<Hoge*>' requested となります。 l.begin() が const で代入できないということだと思うのですが std::list<Hoge*> l; の部分には const を使っていませんし良く分かりません。 また、 Hoge * eval() const { の const を消すか、 std::list<Hoge*>::iterator i = l.begin(); の代入をやめると コンパイルが通ります。 const は return するポインタの先の領域を変更不可にしている と解釈しているのですが、戻り値と関係ない代入がどうして影響を受けるのかが謎です。 (実際は、もう少し違う大きいプログラムですが関係なさそうな部分を削って 上でも同様のエラーメッセージが出ることを確認しました。)

  • AVRマイコン ビルドエラー

    AVRマイコンを #include <avr/io.h> int main(void) { DDRD =0b11111111; PORTD=0b11111111; } で、ビルドしようとしているのですが、 ../test3.c:0: error: MCU `atmega88p' supported for assembler only と、その後に ../test3.c:5: error: `DDRD' undeclared (first use in this function) 等と、エラーが出てビルド出来ません。 どうすればいいのでしょうか? 回答お願いします。

  • Ubuntu feisy fawnでGTK+のプログラミングのコンパイルにて

    Ubuntu feisty fawnでGTK+とgccを使ってプログラミングをしたいのですが、コンパイルで手間取ってしまいました。 ソース #include <gtk/gtk.h> int main(int argc,char *argv[]){ GtkWidget *window; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_show(window); gtk_main(); return 0; } インストールしたパッケージ libgtk-2.0 pkg-config0.21-1build1 gcc-4.1 gcc-4.1-base これをコンパイルするときに cc -o base base.c 'pkg-config --cflags --libs gtk+-2.0' でやると cc: pkg-config --cflags --libs gtk+-2.0: No such file or directory base.c:1:21: error: gtk/gtk.h: No such file or directory base.c: In function ‘main’: base.c:4: error: ‘GtkWidget’ undeclared (first use in this function) base.c:4: error: (Each undeclared identifier is reported only once base.c:4: error: for each function it appears in.) base.c:4: error: ‘window’ undeclared (first use in this function) base.c:8: error: ‘GTK_WINDOW_TOPLEVEL’ undeclared (first use in this function) ちなみに単体でpkg-config --cflags --libs gtk+-2.0でコマンドを打った場合、 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXfixes -lpango-1.0 -lcairo -lX11 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 となっていました。 どなたか解決方法をご存知のかたはいませんでしょうか?

  • C言語、関数、ポインタ、エラー見つけられません。

    いつも大変お世話になり誠にありがとうございます。 標記の件。 エラーが見つけられません。 どうかアドバイスをください。       記 コード #include <stdio.h> double avg(int *pT); int main(void) { int rest[5]; int i; double ans; printf("5人のテストの点数を入力してください。\n"); for(i=0; i<5; i++){ scanf("%d", &test[i]); } ans = avg(test); printf("5人の平均点は%lf点です。\n", ans); return 0; } /*avg関数の定義*/ double avg(int *pT) { int i; double sum; sum = 0.0; for(i=0; i<5; i++){ sum += pT[i]; } return sum/5; } コンパイラーエラー C:\MinGW>gcc text19.c -o text19 text19.c: In function 'main': text19.c:14:22: error: 'test' undeclared (first use in this function) scanf("%d",&test[i]); ^~~~ text19.c:14:22: note: each undeclared identifier is reported only once for each function it appears in 14行目にエラーがあるのかな?と思いますが 間違っていないようです。 ご多忙中恐れ入ります。 ご回答の程宜しくお願い申し上げます。

  • VC++でコンパイルエラーが出ますがお教えください。

    初心者で申し訳なくおもいます。 下記のソースでコンパイルエラーが出ます。 // CnstDst.cpp : アプリケーション用のエントリ ポイントの定義 // #include "stdafx.h" //CnstDst クラス定義 class CnstDst { char sDat[80]; public: CnstDst(char *s); ~CnstDst(); }; CnstDst cd1("テストです"); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { // TODO: この位置にコードを記述してください。 MessageBox(NULL, "WinMainの入口", "WinMain", MB_OK); CnstDst cd2("テスト1"); MessageBox(NULL, "テスト2", "WinMain", MB_OK); return 0; } CnstDst::CnstDst(char *s) { lstrcpy(sDat, s); MessageBox(NULL, sDat, "コンストラクタ", MB_OK); } CnstDst::~CnstDst() { MessageBox(NULL, sDat, "デストラクタ", MB_OK); } コンパパイルエラーは下記です。 プロジェクト 'CnstDst - Win32 (WCE MIPSII_FP) Debug' 用の中間ファイルおよび出力ファイルを削除しています。 --------------------構成 : CnstDst - Win32 (WCE MIPSII_FP) Debug-------------------- リソースをコンパイル中... コンパイル中... StdAfx.cpp コンパイル中... CnstDst.cpp C:\Documents and Settings\中野\デスクトップ\テストフォルダ\CnstDst\CnstDst.cpp(22) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'char [14]' to 'const unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast C:\Documents and Settings\中野\デスクトップ\テストフォルダ\CnstDst\CnstDst.cpp(24) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'char [9]' to 'const unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast C:\Documents and Settings\中野\デスクトップ\テストフォルダ\CnstDst\CnstDst.cpp(31) : error C2664: 'wcscpy' : cannot convert parameter 1 from 'char [80]' to 'unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast C:\Documents and Settings\中野\デスクトップ\テストフォルダ\CnstDst\CnstDst.cpp(32) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'char [80]' to 'const unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast C:\Documents and Settings\中野\デスクトップ\テストフォルダ\CnstDst\CnstDst.cpp(36) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'char [80]' to 'const unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast clmips.exe の実行エラー CnstDst.exe - エラー 5、警告 0 Microsoft eMbedded Visuai C++ Win32 WCE で行っております。

専門家に質問してみよう