
Visual C++ 2005でプログラムを組んでいます。
あるプログラムをビルドすると以下のようにstring.h内でエラーが大量に発生します。string.hをインクルードしないとエラーは出ないことからおそらくstring.hまわりの設定がおかしいとは思うのですがよくわかりません。
エラー2error C2144: 構文エラー : 'char' は ')' によって先行されなければなりません。c:\program files\microsoft visual studio 8\vc\include\string.h 136
エラー3error C2144: 構文エラー : 'char' は ';' によって先行されなければなりません。c:\program files\microsoft visual studio 8\vc\include\string.h 136
エラー5error C2143: 構文エラー : ';' が ',' の前にありません。c:\program files \ microsoftvisualstudio8 \ vc\ include\ string.h 136
宜しくお願いします。
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
メッセージでは、string.h の 136行目でエラーが出ていると言っていますね。
その行だけを見ても原因がわからないかもしれません。
そこで、120行目~140行目あたりを載せていただけますか?
また、string.h のタイムスタンプはどうなっていますか?
他のヘッダーファイルとの違いはありますか?
# (一部とはいえ)製品の内容をこういう場所に載せるのは、著作権か何かに引っかかるのでしょうか。>識者のかたがた
この回答への補足
string.hのタイムスタンプは '2006/12/01' でstdio.h, stdlib.hなどと同じです。
#if __STDC_WANT_SECURE_LIB__
_CRTIMP __checkReturn_wat errno_t __cdecl strerror_s(__out_ecount_z(_SizeInBytes) char * _Buf, __in size_t _SizeInBytes, __in int _ErrNum);
#endif
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, strerror_s, __out_ecount(_Size) char, _Buffer, __in int, _ErrorMessage)
_CRTIMP __checkReturn_wat errno_t __cdecl _strlwr_s(__inout_ecount_z(_Size) char * _Str, __in size_t _Size);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(errno_t, _strlwr_s, __inout_ecount_z(_Size) char, _String)
__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0(char *, __RETURN_POLICY_DST, _CRTIMP, _strlwr, __inout_z char, _String)
_CRTIMP __checkReturn_wat errno_t __cdecl _strlwr_s_l(__inout_ecount_z(_Size) char * _Str, __in size_t _Size, __in_opt _locale_t _Locale);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, _strlwr_s_l, __inout_ecount_z(_Size) char, _String, __in_opt _locale_t, _Locale)
【136行目】__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(char *, __RETURN_POLICY_DST, _CRTIMP, _strlwr_l, _strlwr_s_l, __inout_ecount_z(_Size) char, __inout_z char, _String, __in_opt _locale_t, _Locale)
#if __STDC_WANT_SECURE_LIB__
_CRTIMP_ALTERNATIVE __checkReturn_wat errno_t __cdecl strncat_s(__inout_ecount_z(_DstSize) char * _Dst, __in rsize_t _DstSize, __in_z const char * _Src, __in rsize_t _MaxCount);
#endif
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(errno_t, strncat_s, __inout_ecount_z(_Size) char, _Dest, __in_z const char *, _Source, __in size_t, _Count)
#pragma warning(push)
#pragma warning(disable:6059)
/* prefast noise VSW 489802 */
__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_EX(char *, __RETURN_POLICY_DST, _CRTIMP, strncat, strncat_s, __inout_z char, __inout_ecount_z(_Count) char, _Dest, __in_z const char *, _Source, __in size_t, _Count)
#pragma warning(pop)
お手数おかけします。
No.3
- 回答日時:
とりあえず
#include <string.h>
だけからなるソースコードはコンパイルできますか? これがコンパイルできるなら string.h の問題ではなくあなたの作ったプログラムの問題といえるでしょう.
この回答への補足
回答ありがとうございます。
#include <string.h>だけのコードはコンパイルできません。
数日前までは問題なくコンパイルできたのですが。環境が変わったとしか思えないです。思い当たるのはスパイウェアソフトでスキャンをかけて見つかったものを駆除したぐらいです。
string.hファイルを入れなおしたほうがいいのでしょうか?
No.2
- 回答日時:
もし、本当にstring.hの中にエラーの原因があるとします。
そうすると、質問者さんのところだけでなく、他の人のところでも
同じようなエラーが起こることが考えられるでしょう。
そうなると、世間が黙っていませんよね。
マイクロソフトの信用に関わる話ともなります。
ところが、実際はそうなっていませんね。
ということは、「string.hに原因がある」という仮説が誤っていることになります。
おそらく、質問者さんが書かれたコードに何か正しくない箇所があるのでしょう。
この回答への補足
数日前まではstring.hを利用したソースはコンパイルできていました。
string.hに問題があるのではなく、数日の間で自分のPCでなにか問題が起きたと思っています。ソースは以下になります。
#include <stdio.h>
#include <string.h>
int main(void)
{
int st;
st = strcmp("abced", "abcce");
printf("st = %d\n", st);
return 0;
}
No.1
- 回答日時:
それをインクルードするまえにコンパイルしようとしているソースファイルを良くみて、"("を閉じてないとか、”だけしかないとか。
よおーく見直してみましたか?この回答への補足
#include <stdio.h>
#include <string.h>
ソースは以下のような簡単なものですが、なにか間違いありますでしょうか?
#include <stdio.h>
#include <string.h>
int main(void)
{
int st;
st = strcmp("abced", "abcce");
printf("st = %d\n", st);
return 0;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
sys/time.hのインクルードがで...
-
配列の初期化時に出たエラーの...
-
VC2010のビルドエラーを全部出...
-
HANDLEの宣言でのエラー
-
VS2013 C++で、コンパイルした...
-
Visual Studioのstrcpy_sについて
-
visual C++ でビルドの中止がで...
-
VB.NETのWEBアプリでテキストボ...
-
RightとLeft関数のライブ...
-
EXEで実行すると発生するORA:06...
-
適切な変換関数が存在しない???
-
VC++6.0からVC++2010への移行
-
ビルドが失敗してしまいます
-
バッチからsqlplusの接続エラー...
-
HEWを使用しているのですが、こ...
-
Fortran コンパイルエラーについて
-
VC++でboolがエラーになる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
適切な変換関数が存在しない???
-
fortranでプログラムを実行する...
-
コンパイルできません。
-
ビルド失敗 指定されたファイ...
-
VB2008で定数に色の設定をした...
-
バッチからsqlplusの接続エラー...
-
HEWを使用しているのですが、こ...
-
デバッグ中のエラーのことで教...
-
visual C++ でビルドの中止がで...
-
DLL関数を使ったプログラム
-
Arduinoに関する質問
-
sys/time.hのインクルードがで...
-
Visual Studioのstrcpy_sについて
-
BC30002: 型 'ListItem' が定義...
-
RightとLeft関数のライブ...
-
VBAでファイルを開くプログラム...
-
HANDLEの宣言でのエラー
おすすめ情報