- ベストアンサー
c++エラー | プログラム実行時にエラーが発生
- c++のプログラムを実行した際にエラーが発生し、ビルドが失敗します。
- Thermodl.cファイルの11行目に構文エラーがあります。
- Visual Studio 2010を使用している際に発生するエラーの修正方法を教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
コピペでやるのは結構ですが… エラーで指摘された該当行をもう少しよく見てみませんか? >void PrintResults(ThermoStateType *FILE *int); >void PrintResults(ThermoStateType *ThermoState, FILE *fp, int ConvertToF) プロトタイプ宣言の方、「ThermoStateType *FILE *int」ってなんでしょう? 「,」削除してませんか? 「ThermoStateType *, FILE *, int」かと思われますけど。
その他の回答 (4)
- Tacosan
- ベストアンサー率23% (3656/15482)
ととと, #3 で言われてるところを直せば C でいけるのか. そんな感じがしてきた.
- Tacosan
- ベストアンサー率23% (3656/15482)
/TP は cl のオプションにあるはずだけど, なかったら適当なものを自分で調べてください.
- Tacosan
- ベストアンサー率23% (3656/15482)
「拡張子を無視して C++ としてコンパイルする」オプションがあったはず. /TP だったかな. そいつをつければとりあえず「C++ なら正しいけど C としてはおかしい」部分は通る.
お礼
解決しました。ありがとうございます。 とてもためになりました。 今後も勉強していきたいと思います。
補足
オプションなどを確認してみましたが、./TPを確認することができませんでした。これは、どこにあるものなのでしょうか。 プログラムに書き足すものの場合、可能なら書き方も教えてください。 また、Tacosan様からみて、エラーの原因(とくに11行目のエラー)はどのように変更すれば良いと思われますでしょうか。 度々すみませんが、よろしくお願いします。
- Tacosan
- ベストアンサー率23% (3656/15482)
「C でコンパイルされている」という可能性は? あと, 当該部分の前後を見せてください.
補足
お返事あ人がとうございます。 確認したところ、.cの拡張子でした。これをc++で実行することは出来るのでしょうか? 以下がエラーの前後になります。 #include <stdio.h> #include <stdlib.h> #include "ownet.h" #include "thermo21.h" #include "findtype.h" // defines #define MAXDEVICES 20 // local function prototypes void PrintResults(ThermoStateType *FILE *int); //---------------------------------------------------------------------- // This is the Main routine for thermodl. // int main(int argc, char **argv) { int Fahrenheit=FALSE,filenum,num,i,j; FILE *fp; ThermoStateType ThermoState; uchar ThermoSN[MAXDEVICES][8]; //the serial numbers for the devices int portnum=0; // download the Thermochron found if (DownloadThermo(portnum,&ThermoSN[i][0],&ThermoState,stdout)) { // interpret the results of the download InterpretStatus(&ThermoState.MissStat); InterpretAlarms(&ThermoState.AlarmData, &ThermoState.MissStat); InterpretHistogram(&ThermoState.HistData); InterpretLog(&ThermoState.LogData, &ThermoState.MissStat); // print the output PrintResults(&ThermoState,fp,Fahrenheit); } else { fprintf(fp,"\nError downloading device: "); for (j = 0; j < 8; j++) fprintf(fp,"%02X",ThermoSN[i][j]); fprintf(fp,"\n"); } } // close opened file if (fp != NULL) { printf("File '%s' closed.\n", argv[filenum]); fclose(fp); } // release the 1-Wire Net owRelease(portnum); printf("Closing port %s.\n", argv[1]); ExitProg("End program normally\n",0); return 0; } //-------------------------------------------------------------------------- // Prints the mission data optionaly to a file or standard out // void PrintResults(ThermoStateType *ThermoState, FILE *fp, int ConvertToF) { char *str; // check if need to use standard out if (fp == NULL) fp = stdout; // get big block to use as a buffer str = malloc(80000); if (str == NULL) { printf("Insufficient memory available to print!\n"); return; } // mission status MissionStatusToString(&ThermoState->MissStat, ConvertToF, &str[0]); fprintf(fp,"\n%s\n",str); // alarm events AlarmsToString(&ThermoState->AlarmData, &str[0]); fprintf(fp,"%s\n",str); // histogram HistogramToString(&ThermoState->HistData, ConvertToF, &str[0]); fprintf(fp,"%s\n",str); // log data LogToString(&ThermoState->LogData, ConvertToF, &str[0]); fprintf(fp,"%s\n",str); // debug raw data DebugToString(&ThermoState->MissStat, &ThermoState->AlarmData, &ThermoState->HistData, &ThermoState->LogData, &str[0]); fprintf(fp,"%s\n",str); // free the memory block used free(str); } 長くなりましたが、以上です。よろしくお願いします。
お礼
ありがとうございます。 指摘された箇所を変更したらエラーがなくなりました。 新しいエラーが出たのですが、まずは自分で調べようと思います。 これからはもっとエラー箇所確認しようと思います。 ありがとうございました。