2016-03-28 7 views
0

私は#include header.hが(#のために)プリプロセッサであることを読んだ。これは、それがコンパイル前に処理されることを意味する。 それで私のコードを実行できないのですか?私のヘッダー(パラメータをとる)から私の関数を使ってmainのif文を作成しようとしているため、動作しません。ヘッダーファイルはmainのコードと連携できますか?

Source.cpp

#include <iostream> 
#include "Header.h" 
using namespace std; 

int main(){ 
test(46); 

if (test() > 30){ 
    cout << "great"; 
} 
else{ 
    cout << "It needs to be higher"; 
} 


    system("PAUSE"); 
    return 0; 
} 

問題ではありませんがheader.h

using namespace std; 

    int test(int x){ 
     return x; 
    } 
+2

ヘッダファイルの中に 'using namespace'を置かないでください。長期的に望ましくない副作用を与えることがあります。 – JVApen

+0

あなたのテスト関数は引数をとりますが、それを呼び出すと何も提供しません。それはタイプミスですか? –

+0

'if(test>)> 30でテストするために引数を渡さないのはなぜですか? – JVApen

答えて

3

。私はあなたがtest(int x)を整数パラメータで宣言してからパラメータなしで呼び出すと、コンパイラのエラーメッセージ(またはリンカエラー)を受け取っている可能性があると思われます(例:test())。

私は整数resultを含めるようにコードを変更した:

int main(){ 
    int result = test(46); // Save the result of calling the function 

    if (result > 30){ // Test the value of the result 
     cout << "great"; 
    } 
    else{ 
     cout << "It needs to be higher"; 
    } 


    system("PAUSE"); 
    return 0; 
} 
+0

ああ私は参照してください。私はそれがテストとして宣言するのに十分であると思った(46)、それをifステートメントで使用します。 – HamSelv

0

HEADER.Hファイルのテスト機能を使用して、テストにit.Pass int型を失い、あなたのコード内でparameter.Butとしてint型を取りますこのような機能。

if (test(42) > 30) 

次のような出力が得られます。

+0

さて、ヘッダーはmainのintデータ型を転送しませんか? – HamSelv

+2

@HamSelvヘッダーファイルには宣言と定義が含まれています。これらは宣言された通りに正確に使用されます。したがって、メインファイルでは、コンパイラは 'test()'が 'int'を返し、' int'型のパラメータを渡す必要があることを知っています。 –

関連する問題