2016-03-28 74 views
0

#include header.h bir preprocessor olduğunu (# nedeniyle), bu derleme önce işlenen anlamına gelir. Bu yüzden kodum çalışmıyor mu? Çünkü, başlığımdan (bir parametre alır) işlevim ile ana bir if ifadesi oluşturmaya çalışıyorum ve işe yaramıyor. sorun değilBir başlık dosyası ana kod ile işbirliği yapabilir mi?

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

Header dosyalarının içine 'namespace 'koymayın, uzun vadede – JVApen

+0

uzun süre istenmeyen yan etkiler verebilirsiniz, test fonksiyonunuz bir argüman alır, ancak bunu çağırdığınızda size herhangi bir bilgi vermezsiniz. Yazım hatası mı? –

+0

Neden "if (test()> 30)' te test etmek için bir argüman iletmiyorsunuz? – JVApen

cevap

3

. Bir tamsayı parametresiyle test(int x) bildirdiğinizden ve herhangi bir parametreyle çağırdığınız için bir derleyici hata iletisi (veya bağlayıcı hatası) aldığınızdan şüpheleniyorum, örneğin: test().

Ben bir tamsayı result içerecek şekilde kodunu değiştirdik:

Header.h dosyasında testi işlevi kodunuzda parameter.But gibi bir int alır
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

Aah Anladım. Testimi test olarak ilan etmenin yeterli olduğunu düşündüm (46) ve sonra if ifadesinde kullan. – HamSelv

0

test etmek it.Pass bir int kaybetmek Bunun gibi işlev.

if (test(42) > 30) 

Çıktıyı alacaksınız: harika.

+0

Tamam, bu nedenle başlık int veri türünü ana aktarmıyor mu? – HamSelv

+2

@HamSelv Üstbilgi, bildirildikleri gibi kullanılmaları gereken bildirimleri ve tanımları içerir. Yani ana dosyada derleyici 'test()' ın 'int' döndürdüğünü ve' int' türünde bir parametre geçirilmesi gerektiğini bilir. –