アプリ版:「スタンプのみでお礼する」機能のリリースについて

粗末な質問タイトルで申し訳ありません。

Visual C++2010で、includeを書かずにclass宣言を行おうとすると「Error:PCH警告」が発生します。
この理由をご教授ください。

IntelliSense: PCH 警告: 適切なヘッダー停止位置が見つかりません。

というエラーメッセージが表示されるのですが、これはプロトタイプ宣言がないときに発生する警告らしいですね。私が書こうとしているソースコードを次に示します。

-----main.cpp----
class TestClass {};

int main(void)
{
return (0);
}
-----------------
このソースで、"class"の部分に赤波線が引かれて先述のエラーメッセージが表示されます。

このソースの先頭に#include<iostream>なり#include<stdlib.h>なり何かインクルードを記述すると警告はなくなります。

しかしクラスはその枠のみですし、ライブラリ関数も何も使用していないのでとくに必要なインクルードファイルも何もないと思うのですが、どうしてこのようなエラーが発生するのでしょうか。


あと、蛇足になりますが、本来はクラス宣言部分を別のヘッダーファイルに分けたいのです。
クラス宣言部分を別のヘッダーに分離してヘッダーの先頭に

#pragma once

を記述するか、分離したヘッダをmain.cpp内でインクルードしてもエラーは解消されます。
(何からもインクルードされなかったらエラーになる)

もう何が何やらさっぱりわからないです><

A 回答 (3件)

どうも、intellisenseの「仕様」のようです。



※ intellisenseは、入力時に候補を選ばせたりするやつです。

手許のVS2010で試したところ
#if 0
#endif
class TestClass {};

int main(void)
{
return (0);
}
という意味の無い#if~#endifを入れてもエラーは消えました。




「蛇足」部分について、検索したら同様のことがありました。
http://tanjoin.hatenablog.com/entry/20121213/135 …
    • good
    • 0
この回答へのお礼

VS自体の仕様だったんですね
知らないとドツボにはまってしまいますね…

私ははまってしまいました。
はじめは「なんでこんな単純なコードでエラーになるんだ。クラスの書き方が間違っているのか?」とずっと悩んでいました。

回答ありがとうございました。

お礼日時:2014/09/24 12:18

プロジェクト・プロパティ 校正プロパティ C/C++ プリコンパイル済みヘッダ : プリコンパイル済みヘッダ を使用しない



ではどうですか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

「プリコンパイル済ヘッダー」の欄は空欄でした。
下の「プリコンパイル済みヘッダー ファイル」の欄を空欄にしてみましたが、エラーは解消されませんでした。

お礼日時:2014/09/24 12:12

そのエラーは、mainにプロトタイプ宣言が無いから発生している。



int main(void); //mainをプロトタイプ宣言しておく

int main(void) //必ずプロトタイプ宣言しておいてから実体を定義する
{
return (0);
}

これで解決する。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

残念ながら、メインルーチンのプロトタイプを宣言してはみましたが、エラーは解消しませんでした。

お礼日時:2014/09/24 12:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!