- ベストアンサー
HEW3とBorlandC++でクラス定義の違い???
- C++のヘッダファイルに、クラスの定義をしました。mainプログラム内でそのクラスのオブジェクトを定義しました。BorlandC++では、そのプログラムは問題なくコンパイル&実行できるのですが、HEW3ですと、「語句の並びが文法にあっていません」という旨のエラーが出ます。
- クラス定義も、一般の書籍に書いてあるとおりに定義しているし、BorlandC++ではエラーになりません。HEWだと定義の仕方が特殊なのでしょうか??
- 私の知識レベルではHEWのマニュアルが難しくてなかなか理解できません。どうか初心者にもわかりやすく解説していただけませんでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ソースファイルの拡張子がcppでなくcのため C++ではなくCとしてコンパイルしているということはないでしょうか? これ以外でクラス宣言でエラーが起こるとすると 前の宣言が正しく終了していない、 すでに定義されたトークン名、 もしくは#include前後に何か問題があるはずです。
その他の回答 (2)
- terra5
- ベストアンサー率34% (574/1662)
コンパイラが違えば通常何かしら違いがあります。 標準に完全に準拠していない(できていない),定義があいまいな部分がありコンパイラ作成者によって解釈が異なる、 独自の拡張がなされている場合がある,言語仕様上もともと実装依存となる部分が存在する,OSやCPUに依存する部分がある等の理由です。 実際は、問題のソースとコンパイラの仕様がわからないとなんとも言えません。 まあ、ソースと正確なエラーメッセージがあればある程度見当はつくと思いますが。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
エラーになる部分を表示できませんか?
補足
ご回答ありがとうございます。 class pulse{ protected: unsigned int carrer; unsigned int *atai; unsigned int u,v,w; public: pulse(double hz,unsigned int prescaler,unsigned int ini_carrer,unsigned int ini_dead); ~pulse(); void next_phase(); void set_TBR(); unsigned int phase_u,phase_v,phase_w,td,cnt; }; エラーメッセージ******** C:\Hew3\clock\clock\func.h(26) :C2500 (E) Illegal token "pulse" C:\Hew3\clock\clock\func.h(26) : C2500 (E) Illegal token "{" エラーメッセージの「func.h(26)」の部分が、プログラムの「class pulse{」の部分を指しています。 書き方、間違ってるのでしょうか(T_T)
補足
ご回答ありがとうございます! >ソースファイルの拡張子がcppでなくcのため >C++ではなくCとしてコンパイルしているということはないでしょうか? あーっ!! どうやらそのようです(@_@)!!!!! cppからcを呼び出す時は、extern"c"をしているのですが、その逆の存在を忘れていました・・・。 ありがとうございます。 cでcppを呼び出す方法、調べてみますm(__)m