• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コンパイルエラーについて)

コンパイルエラーについて

このQ&Aのポイント
  • 現在、大学でステッピングモーターの制御について学んでいます。コンパイルエラーについてお力をお貸しいただけたら幸いです。
  • Windows7およびVC++6.0を使用して、ステッピングモーターの制御プログラムを作成しています。
  • コンパイルエラーが発生しており、エラーメッセージは型の指定や識別子の未定義などの問題が報告されています。

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

  • ベストアンサー
  • hisappy
  • ベストアンサー率46% (184/392)
回答No.4

ひとまずこんな感じでしょうか。 ///Motorprogram #include "Svcpp.h" #define JOG_P 0x32;//定速連続+方向の定義 int sub() {   bool flag;   ///X軸(定速連続+方向)   flag=ppd3test('X','+');//動作可否の判断   if(!flag)   {     w_p234.axis ='X';     w_p234.cmd = JOG_P;//定速連続+方向     w_p234.spd = 25;//25pps     flag = hp234_writ(&w_p234);//動作開始指令   }   return(1); } そのままだとやっぱりエラーなのは意図的です。 とはいうものの、妙な点があります。 質問文の通りならば 「'ppd3test' : 定義されていない識別子です。」 というエラーは出ないのが正しいようですが??

kon0127
質問者

お礼

回答ありがとうございます。 flagが定義できたので、エラーが減りました。 ///Motorprogram #define USE_MOTOR #ifdef USE_MOTOR #include "Svcpp.cpp" Hppd234 Hp; #endif short hp234_jog_p (short,short,short,long); /* No.19 */ void init(); /* HLS-PPD234Wxx initialize */ void x_set_orgn(); /* X axis origin set */ void y_set_orgn(); /* Y axis origin set */ void z_set_orgn(); /* Z axis origin set */ void u_set_orgn(); /* U axis origin set */ void set_orgn(short); int sub() { bool flag; ///X軸(定速連続+方向) // flag=ppd3test('X','+');//動作可否の判断 // if(!flag) void Hppd234::set_orgn(short axis) { short mode; w_p234.axis ='X'; w_p234.cmd = JOG_P;//定速連続+方向 w_p234.spd = 25;//25pps flag = hp234_writ(&w_p234);//動作開始指令 } return(1); } motor-2011.cpp C:\~\motor-2011.cpp(26) : error C2601: 'set_orgn' : ローカル関数の定義が正しくありません。 cl.exe の実行エラー 少し改良したら新たなエラーが出てしまいました。。 ちなみにppd3の問題は解決してないのですが、とりあえず動作を確認したいのでコメントアウトしました。 set_orgnについて定義できていないということのなのでしょうか??

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

その他の回答 (3)

回答No.3

こんにちは。 いろいろ突っ込みたいところはありますが、1つだけ確認です。 #include "Svcpp.cpp" とありますが、ヘッダーのインクルードが間違っているという事はないでしょうか? #include "Svcpp.h" とか・・・一応確認です。(^^;;

kon0127
質問者

お礼

回答ありがとうございます。 #includeは実際にボードのアドレスや基本情報を詰め込んであるもので、添付のソフトウェアについていたものです。 形がやはりめちゃくちゃなのですね。 説明不足で申し訳ないです。

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

こんにちは。 コードの一部だけ出されても。 「flag」の定義はどこで? 「w_p234」は「Svcpp.cpp」の中で Static に定義されているのですか? まぁ、とにかくでたらめなコードですね。

kon0127
質問者

お礼

勉強不足で申し訳ありません。 flagはやはり定義してあげないといけないのですね。 w_p234についてはSvcpp.cppの中で定義されているので問題ないと考えています。 動作を検証したいのでなるべくシンプルな構造で作りたかったのですが、形がめちゃくちゃなのですね。

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

...まともなコードには見えません。 if(!flag){ ... } が関数のスコープ内に収まっていませんので。

kon0127
質問者

お礼

回答ありがとうございます。 flagの内容は動作可否の判断ですが、それをコメントアウトすればif文についてもカットしてしまっても大丈夫なのでしょうか? とにかく動作するかどうかということに重点をおいています。

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

関連するQ&A

  • エラーについて

    ネットワークプログラミングを作っているのですが、 今までほとんど扱ったことのないC++を使っていて 下記のエラーに悩まされています。 ****************************** i:\program\client\client.cpp(168): error C2228: '.sin_family' : 左側がクラス、構造体、共用体ではありません。 i:\program\client\client.cpp(169): error C2228: '.sin_port' : 左側がクラス、構造体、共用体ではありません。 型は 'int' です。 i:\program\client\client.cpp(170): error C2228: '.sin_addr' : 左側がクラス、構造体、共用体ではありません。 型は 'int' です。 i:\program\client\client.cpp(170): error C2228: '.S_un' : 左側がクラス、構造体、共用体ではありません。 i:\program\client\client.cpp(170): error C2228: '.S_addr' : 左側がクラス、構造体、共用体ではありません。 ****************************** エラーの出ている行は ****************************** memset(&saddr, 0, sizeof(SOCKADDR_IN)); saddr.sin_family = lpHost->h_addrtype; saddr.sin_port = htons(uport); saddr.sin_addr.s_addr = *((u_long*)lpHost->h_addr); ****************************** という部分になります。 手元のサンプルも全く同じに書いてあるのですがエラーは出ず、 ほぼ同じように自分の手で打ったプログラムにはエラーが出ています。 エラーそのものの意味も実はよくわかっていない状態なので、 ご教授願えたら、と思います。

  • stattime[p1] = GetTickCount(void);

    1: #include <windows.h> 2: #include <vector> 3: using namespace std; 8: vector < unsigned long > stattime; 12: stattime[p1] = GetTickCount(void); 17: *p1 = GetTickCount(void)-stattime[p2]; C:\desktop\HTC\htc.cpp(12) : error C2144: 構文エラー : ')' が型 'void' の前に必要です。 C:\desktop\HTC\htc.cpp(12) : error C2059: 構文エラー : ')' C:\desktop\HTC\htc.cpp(17) : error C2144: 構文エラー : ')' が型 'void' の前に必要です。 C:\desktop\HTC\htc.cpp(17) : error C2059: 構文エラー : ')' 必要と思われるとこだけ書いてみましたがエラーが出てしまいます どこが悪いのでしょうか? 使ってるソフトはVC++Ver6.0です

  • MinGWのg++で分割コンパイルエラー

    MinGW環境でC++の勉強を始めました。 簡単なサンプルのコンパイルをしてみたのですが、ソースファイルを一括してコンパイルすると問題ないのですが、個別にコンパイルしようとするとエラーがでてしまいまいます。 原因や対処法をご存じの方がいらっしゃいましたらご教示下さい。 一括でコンパイルすると問題なし bash-3.1$ g++ -Wl,--enable-auto-import main.cpp point.cpp -lstdc++ 個別にコンパイルしようとした場合 bash-3.1$ g++ -Wl,--enable-auto-import -o main.o main.cpp C:\DOCUME~1\user\LOCALS~1\Temp\ccZrVmLp.o:main.cpp:(.text+0x16): undefined reference to `Point::Point()' C:\DOCUME~1\user\LOCALS~1\Temp\ccZrVmLp.o:main.cpp:(.text+0x32): undefined reference to `Point::Point(int, int)' C:\DOCUME~1\user\LOCALS~1\Temp\ccZrVmLp.o:main.cpp:(.text+0x3e): undefined reference to `Point::println()' C:\DOCUME~1\user\LOCALS~1\Temp\ccZrVmLp.o:main.cpp:(.text+0x4a): undefined reference to `Point::println()' collect2: ld returned 1 exit status ※ -Wl,--enable-auto-importは、他の警告を消すために入れました、無くても質問の問題に変化はありませんでした。 サンプルソース ---main.cpp--- #include<iostream> #include "point.h" using namespace std; int main(){ Point p1,p2(4,5); p1.println(); p2.println(); return 0; } ----------- ---point.h--- class Point { private: int x, y; static int count; public: Point(); Point( int, int ); void set( int, int ); void println(); }; ------------- ---point.cpp--- #include<iostream> #include"point.h" using namespace std; int Point::count; Point::Point(){ this->x = this->y = 0; ++count; } Point::Point(int ax, int ay){ this->x = ax; this->y = ay; ++count; } void Point::set( int ax, int ay ){ this->x = ax; this->y = ay; } void Point::println(){ cout << "Point(" << x << "," << y << ")" << endl; } ----------- bash-3.1$ g++ -v Using built-in specs. COLLECT_GCC=D:\MinGW\bin\g++.exe COLLECT_LTO_WRAPPER=d:/mingw/bin/../libexec/gcc/mingw32/4.5.0/lto-wrapper.exe Target: mingw32 Configured with: ../gcc-4.5.0/configure --enable-languages=c,c++,ada,fortran,obj c,obj-c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgo mp --disable-win32-registry --enable-libstdcxx-debug --enable-version-specific-r untime-libs --disable-werror --build=mingw32 --pref

  • C++コンパイルエラーの原因を教えてください

    Cには詳しいのですが、C++があまりよくわかっておらず、質問させてください。 今回、手に入れたC++のあるプログラムをmakeしています(x86_64 Linux)。 以下のようなエラーが出てコンパイルできないのですが、何が悪いのか全く理解できず困っています。 他の環境ではコンパイルできているらしいので、わたしの環境の何が悪いのか、考えられることがありましたら、何でも書き込んでいただけると嬉しいです。 よろしくお願いします。 g++ -c -I../MathUtils -I../CommonUtils -DHAVE_ZLIB -DHAVE_BZLIB -fomit-frame-pointer -O2 -DFTYPE=float -Wall -Wsign-compare -Wpointer-arith -pedantic -DHAVE_PGPLOT -I. -DHAVE_FFTW -o analyse_image.o analyse_image.cpp In file included from analyse_image.cpp:21: Tools.h:16:15: warning: anonymous variadic macros were introduced in C99 analyse_image.cpp: In function ‘int main(int, char**)’: analyse_image.cpp:114: error: ‘strcmp’ was not declared in this scope analyse_image.cpp:205: error: ‘exit’ was not declared in this scope analyse_image.cpp:209: error: ‘strstr’ was not declared in this scope analyse_image.cpp:216: error: ‘exit’ was not declared in this scope analyse_image.cpp:457: error: ‘strlen’ was not declared in this scope make: *** [analyse_image.o] Error 1

  • コンパイルエラーが理解できません

    初心者ですお教えください。 下記ソースをMicrosoft eMbedded Visual C++ でコンパイルしましたがコンパイルエラーが出て 理解できませんどなたかお教えください。 STANDARDSDK Win32 (WCE x86)Debug STANDARDSDK Emulator -------------------------------------------------- #include "windows.h" int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { SYSTEMTIME tm; char s[80]; int iRet; // 現在時刻を取得します。 GetLocalTime(&tm); // 表示する文字列を設定します。 if ((tm.wHour >= 0) && (tm.wHour < 12)) { lstrcpy(s, "おはです。"); } else if (tm.wHour < 17) { lstrcpy(s, "こんちは。"); } else { lstrcpy(s, "こんば。"); } // メッセージボックスに文字列を表示します。 iRet = MessageBox(NULL, s, "MsgBox", MB_OK); // 正常終了を意味する戻り値を返します。 return 0; } <コンパイルエラー内容です> プロジェクト 'MsgMain - Win32 (WCE x86) Debug' 用の中間ファイルおよび出力ファイルを削除しています。 --------------------構成 : MsgMain - Win32 (WCE x86) Debug-------------------- コンパイル中... MsgMain.cpp C:\Documents and Settings\中野\デスクトップ\MsgMain.cpp(7) : error C2731: 'WinMain' : function cannot be overloaded C:\Documents and Settings\中野\デスクトップ\MsgMain.cpp(3) : see declaration of 'WinMain' C:\Documents and Settings\中野\デスクトップ\MsgMain.cpp(17) : 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\中野\デスクトップ\MsgMain.cpp(19) : 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\中野\デスクトップ\MsgMain.cpp(21) : 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\中野\デスクトップ\MsgMain.cpp(25) : 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 cl.exe の実行エラー MsgMain.exe - エラー 5、警告 0 以上です宜しくお願いします。

  • コンパイルエラー

    VB6 OS XP コンパイルエラーが起こります。 インタープリターでは問題なく動作します。 以下 エラーメッセージ F:\With You Sorce\PlugIn\Math_H\Hplus.bas(230) : fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'e:\work\utc2\src\P2\main.c', line 507) Please choose the Technical Support command on the Visual C++ Help menu, or open the Technical Support help file for more information ソースをいじくって、 KOTA$ = "1\" + Str$(W% \ Y%) この1行を削ると、スムーズにコンパイルされます。 これは、VB6のコンパイラーのバグでしょうか。

  • コンパイル時のエラーについての質問です。

    プログラミングについての質問です。 ArduinoLeonardoでコンパイル時にエラーが出てしまいました。 以下のメッセージが出てきました。 C:\Users\ZZ0711\AppData\Local\Temp\ccJJkwZc.ltrans0.ltrans.o: In function `main': C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/main.cpp:43: undefined reference to `setup' collect2.exe: error: ld returned 1 exit status 次のフォルダのライブラリsrcを使用中:C:\Program Files (x86)\Arduino\libraries\src (legacy) 次のフォルダのライブラリHIDバージョン1.0を使用中:C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\HID exit status 1 ボードArduino Leonardoに対するコンパイル時にエラーが発生しました。 自力で調べてみましたが何度試しても解決しません。 何とかして書き込みたいです。よろしくお願いします。

  • コンパイル

    コンパイルしましたが、\mingw\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot find -ldb-4.5 collect2 ld returned 1 exit statusというメッセージが表示されます。 コマンドプロンプトでcd C:\Users\xxxxx\Desktop\srcと入力し、cobc -x -std=cobol85 pro1.cblと入力した結果です。ソースはC:\Users\xxxxx\Desktop\srcにあります。MinGWとOpenCOBOLの動作確認はできています。

  • AIXでの cc コンパイルエラーについて

    お世話になります。 Severもcもまったくわからない初心者なのですが質問させていただきます。 AIXへの移植が必要になり、RHEL6.1(x86)では開発が終了しているCソースをAIXでコンパイルを行ったところ、下記のようなエラーが出て最後までMakeが実行できません。 <ccを指定してコンパイル> "../program.c", line 1222.17: 1506-021 (S) Expecting struct or union. <"../program.c", > ~ #include <sys/types.h> #include <sys/wait.h> ~ int rc,sh_rc; ~ aa_rc = WEXITSTATUS(rc); <== line 1222の部分 ~ OS=AIX 7.1.0.0 Cコンパイラ=vac.C 11.1.0.4 COMMITTED IBM XL C Compiler Makeを実行したいのですがどうしたらよいでしょうか。教授頂けると幸いです。

  • Borlandで組んだC+サンプルでエラーに

    borlandでc++のあるサイトのサンプルを動かそうとしたのですが、 C:\borland\work\stl_sample3>bcc32 stl_sample3.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland stl_sample3.cpp: エラー E2206 stl_sample3.cpp 22: 不正な文字 '$' (0x24)(関数 main() ) エラー E2206 stl_sample3.cpp 30: 不正な文字 '$' (0x24)(関数 main() ) エラー E2206 stl_sample3.cpp 33: 不正な文字 '$' (0x24)(関数 main() ) エラー E2206 stl_sample3.cpp 43: 不正な文字 '$' (0x24)(関数 main() ) エラー E2206 stl_sample3.cpp 45: 不正な文字 '$' (0x24)(関数 main() ) エラー E2206 stl_sample3.cpp 48: 不正な文字 '$' (0x24)(関数 main() ) *** 6 errors in Compile *** というエラーになりました。 22行目は map<string, vector<string> > $_POST; となっています。 もしかして、borland c++コンパイラでは$が使えないのでしょうか? VSでないとダメなのですか?