エラーの原因がわかりません

[戻る]
はな 2006/07/27(木) 13:30:53
WinXPのVC++6.0です。

コンパイルすると//set standard headerという所に

→_STD_BEGINに印がついて
『error C2059: 構文エラー : 'namespace'』と『error C2334:'{' の前に予期しないトークン
がありました。関数の本体は無視されます』出るんですが、どんな事で回復するのでし
ょうか??

三つのクラスに同様のエラーが出ます。

επιστημη 2006/07/27(木) 13:41:45
あなたの書いたコードを見せてもらわんとどーにもなりません。
解決の糸口を出し惜しみして困るのはアナタ。

はな 2006/07/27(木) 13:53:00
すいません、どこを載せればよいかわからなくて。

// set standard header

#if    _MSC_VER > 1000
#pragma once
#endif#ifndef _SET_
#define _SET_
#include <functional>
#include <xtree>

#ifdef  _MSC_VER
#pragma pack(push,8)
#endif  /* _MSC_VER */

_STD_BEGIN…※

以下続く

コンパイルしてF4を押すと、※に矢印がついてさっきのコメントがでます。

多分ここをお見せしても意味がないと思うんですが。まず、set standard headerという
のがどこなのかわかりません。

PATIO 2006/07/27(木) 13:54:58
落ち着いて書き込んだ内容でそれだけを読んだ人間が状況を
把握できるのかを考えてみてください。

> コンパイルすると//set standard headerという所に
> →_STD_BEGINに印がついて

これだけ書かれていても何の事だかわからんと思うのですが。
ソースファイルやヘッダーファイルの中身を把握しているのは
あなた自身だけでこれを読んでいる人間には全くわかりません。

PATIO 2006/07/27(木) 14:00:21
あらら、ニアミス。

出しているファイルのファイル名くらいわかりませんか?
普通、エラーコードの所に書いてありそうなもんですが。

なんか、C言語のコンパイルをしているのに
namespaceを使っているような気がするのは私だけですかね。

はな 2006/07/27(木) 14:07:30
作成している.cppファイルの\include\setの中のファイルのようですね。

PATIO 2006/07/27(木) 14:17:07
Microsoft提供のヘッダーファイルで無いなら
ファイル名がわかっても多分意味ないですね。
ヘッダーファイルは多分、はなさんの手元にしかない。
はなさんの関係者は持っているかもしれませんけれど、
掲示板を読んでいる人間にはわかりませんし。

_STD_BEGINの定義内容は何処にあるんでしょうねぇ?

仮に_STD_BEGINを
namespace std {
に置き換えたらどうなるのだろう。

PATIO 2006/07/27(木) 14:20:14
もしかしたら

#include <functional>
#include <xtree>

でインクルードしているヘッダーファイルの方に問題があったりして。
VC++6.0ってC++の準拠率が低いからそれで引っかかっているのかも。

はな 2006/07/27(木) 14:30:11
>Microsoft提供のヘッダーファイルで無いなら
>ファイル名がわかっても多分意味ないですね。
はじめからあるViewクラスにもエラーが出ているみたいです。


>仮に_STD_BEGINを
>namespace std {
>に置き換えたらどうなるのだろう。

同様のエラーになり、変わりませんでした。


>#include <functional>
>#include <xtree>

>でインクルードしているヘッダーファイルの方に問題があったりして。
>VC++6.0ってC++の準拠率が低いからそれで引っかかっているのかも。

このようなヘッダーファイルはリソース、ヘッダーファイルのどこにも書いてはいない
のですが。


少ない情報で解答してもらってすいませんでした。

PATIO 2006/07/27(木) 14:42:53
まさかと思いますが、
プロジェクトの設定を弄ったりしてませんか?

コンパイラに /TCとか指定してません?

新たにヘッダファイルを作成してその中で

namespace AAA {
int     a;
};

としてエラーが起こっていないcppファイルにインクルードすると?

はな 2006/07/27(木) 15:12:45
すいません、勉強不足でよくわからなかったのですが、コンパイラは標準のものを使用
していると思います。

>新たにヘッダファイルを作成してその中で

>namespace AAA {
>int     a;
>};

>としてエラーが起こっていないcppファイルにインクルードすると?

やり方がわからずできませんでした。せっかくのアドバイスなのに本当にすいません。

PATIO 2006/07/27(木) 15:19:11
その様子だとプロジェクト弄ったりはしてなさそうですが。
問題のプロジェクトは自分で作成したものですか?
それとも人からもらったもの?
他に新たに新しいプロジェクトを作成してビルドしても
同じ事が起こりますか?

はな 2006/07/27(木) 15:28:51
どちらかといえばもらったものですね。それをファイル名等を変更して見ているといっ
たとこでしょうか。

新しくプロジェクトを立ち上げて何も書かない状態でコンパイルすると普通にエラー、
警告なしに実行できました。

επιστημη 2006/07/27(木) 15:31:45
> どちらかといえばもらったものですね。それをファイル名等を変更して見ているといっ
> たとこでしょうか。

ならば問題は変更の前後でなにが違うか、だ。

class/struct のケツに ; 付け忘れた。とかそんなくだらん原因のよな希ガス。

PATIO 2006/07/27(木) 15:34:39
となるとそのプロジェクトの設定を疑った方がいいかも。

新しく作成したエラーのないプロジェクトの設定を開いて
C/C++タブのプロジェクトオプション欄に/TCを追記したら
同じエラーが起こるか試して見ては?

PATIO 2006/07/27(木) 15:35:59
うぉっ、επιστημηさんの線が濃いかも。
namespaceの前でクラスの宣言がちゃんと終わってないとか
そんな原因の可能性も大。

kure 2006/07/27(木) 15:37:17
これってstd::setを定義してるヘッダのsetでエラーってこと。
普通そんなところでエラーは出ないので、
自前のソースの#include<set>としてるところ以前に問題があるはず。

はな 2006/07/27(木) 15:59:32
>class/struct のケツに ; 付け忘れた。とかそんなくだらん原因のよな希ガス。

解明しました。いらない箇所を/* */でコメントしていて、必要なものまでコメント化
してました。化学好きなんですね。


>新しく作成したエラーのないプロジェクトの設定を開いて
>C/C++タブのプロジェクトオプション欄に/TCを追記したら
>同じエラーが起こるか試して見ては?

同じエラーは出ませんでした。


>これってstd::setを定義してるヘッダのsetでエラーってこと。
>普通そんなところでエラーは出ないので、
>自前のソースの#include<set>としてるところ以前に問題があるはず。

確かに、それの以前でおかしな事になってました。

はな 2006/07/28(金) 08:54:50
[[解決]]
みなさん、今回もありがとうございました。

現在はエラーを無くすよう努力中です。

古いスレッドには追加発言できません。