2012-12-29 11 views
6

私はヘッダーファイルを作ることを学んでいます。ここに私のコードはヘッダーファイルを学習するC++。このセミコロンはどうですか?

//Main.cpp 
#include <iostream> 
#include "functions.h" 
; 
using namespace std; 

int main() 
{ 
    cout << multiply(3, 4) << endl; 

    return 0; 
} 

//functions.cpp 
int multiply(int x, int y) 
{ 
    return x * y; 
} 

//functions.h 
#ifndef FUNCTIONS_H_ 
#define FUNCTIONS_H_ 

int multiply(int x, int y) 

#endif 

(3つの別々のファイル)のコードがコンパイルされ、実行されますが、私を悩ま部分がMAIN.CPPです。 "functions.h"以下のセミコロンは "namespaceを使用しています。"

私はビジュアルスタジオがそれを期待していると言っていたので、それを置いていましたが、理由は分かりません。私はチュートリアルでそれを見ません。

確かに動作します。しかし、私はそれがなぜそこにあるのか分からないのは好きではありません。

ありがとうございました!あなたはfunctions.h内の1つのセミコロンを逃しているので

+0

C++を学んでいるので、標準ライブラリの型/関数を完全に修飾することも学んでください。 'std ::'とタイプするのはそれほど退屈ではありません。 – Praetorian

+0

ちょっと読んだだけです。ヘッダーファイルのネームスペースを作成しないことには意味があります。しかし私の個人的なテストコーディングでそれを省略するのには実用的な使用があると言いますか? (習慣形成を除いて) – Wimp

+2

あなたは@Praetorianを追加しなかったので、おそらくあなたの質問は表示されませんでした。 「名前空間を使用する」という言葉の問題は、意見がいっそう宗教的な議論になる傾向があります。私の宗教的意見は、小さなプログラムの場合、それは完璧です。そして、もしあなたがこれで仕事をしてくれる唯一の人なら、あなたが好きなことを何でもしてください。しかし、あなたが指摘したように、悪い習慣を開発することに注意してください。 –

答えて

14

int multiply(int x, int y); 
          ^^^^ here 

C++は、セミコロンで文を区切ります。

#include directive "functions.h"ファイルの内容は、ファイルの内容と共にコンパイラに送信されます。その結果、ヘッダーファイルの間違いによるコンパイルエラーが、コードを含むコードで報告されることがよくあります(フィリップスへの返信)

+0

AH!私はそれが何かばかげてシンプルになることを知っていた。どうもありがとう!現在は動作しています:) – Wimp

+4

何を指摘すべきですか?C++のインクルードディレクティブは、 "ここにそのファイルの内容をコピー&ペースト"する以外は何も意味しません。その結果、ヘッダーファイルの間違いによるコンパイルエラーは、それらを含むコードで報告されることがよくあります。 – Philipp

+0

私は私の答えで言ったように意味ですか?しかし、それをタイプしなければならなかったので、私は最初にそこに着くことはありませんでした。 –

6

CプリプロセッサはCの構文について何も知らないので、電子メール、アセンブラソースファイル、またはHTMLをまとめたい場合は、すべてのソースを1つの長いファイルに入れてコンパイラが実際にコンパイルするようにします。

"functions.h"にint multiply(int x, int y)の後にセミコロンがありません。

+0

+1は、Cプリプロセッサの無関係な用途に使用します。どのような斬新なアイデア= P – WhozCraig

関連する問題