2012-01-17 16 views
7
aşağıdaki hatayı alıyorum

: Çoklu tanımı İki C++ dosyaları içinde vardır, yeni bir proje oluşturdukDerleme zamanı hatası: Çoklu tanımı 'Ana'

`ana:

hatası alıyorum, Dosya 2

#include <iostream> 

using namespace std; 

int main() 
{ 
    cout<<"Demo Program"; 
    return 0; 
} 

Ben proje ve Çalıştır kurmak basın 1

#include <iostream> 

using namespace std; 

int main() 
{ 
    cout<<"Hello World"; 
    //fflush(stdin); 
    //getchar(); 
    return 0; 
} 

File. Bu dosyaları nasıl çalıştırırım?

+0

int main() DOSYASI 2'den? – sandbox

+0

İsmi değiştirebilir ve istediğiniz yere çağırabilirsiniz. Ya da dosyaları iki farklı projede var. – atoMerz

+0

, bu işlevlerin her ikisini de farklı isimler verir ve main() argümanlarını alır (int argc, char * argv []). Ardından, hangi iki işlevinizin çağrılacağını belirlemek için geçirilen argümanları kullanın. – CashCow

cevap

11

Aynı projede iki ana işleviniz olamaz. Bunları ayrı projelere yerleştirin veya işlevlerden birini yeniden adlandırın ve diğer ana işlevden çağırın.

Parametre listesi nasıl olursa olsun, giriş noktası olduğundan projenizde birden fazla ana() işlevine sahip olamazsınız.

Ancak, parametre listesi farklı olduğu sürece (function overloading) diğer işlevlerin birden fazla bildirimi olabilir.

Dosya 1

#include <iostream> 

using namespace std; 

int main() 
{ 
    cout<<"Hello World"; 
    otherFunction(); 
    return 0; 
} 

Dosya 2

#include <iostream> 

using namespace std; 

void otherFunction() 
{ 
    cout<<"Demo Program"; 
} 

Dont uygun olanı #includes unutur.

4

İki ana işleviniz olamaz. Aslında, projenizden (dosyalarınızı değil) aynı imzaya sahip iki işleviniz olamaz.
Ve BayTAMER'in ana özel bir durum olduğu gibi, main olarak adlandırılan iki fonksiyona sahip olamazsınız.

+1

Sadece AtoMerZ'ın cevabını devam ettiren 'main' özel bir durumdur, parametre listelerinin (yani imza) nasıl farklı olduğuna bakılmaksızın 'main' adıyla iki fonksiyona sahip olamazsınız. –

+0

@ Mr.TAMER: Teşekkürler. Düzenledim. – atoMerz

0

Aynı işlev imzasını aynı projede kullanamazsınız, derleyici ana yürütmeden başlatılmalı(). Ana() birden çok kez tanımlarsanız, o zaman bir hata üretir. file1.c

#include <iostream> 

#include <file2.h> 
using namespace std; 

int main() 
{ 
cout<<"Hello World"; 
//fflush(stdin); 
//getchar(); 
return 0; 
} 

ve file2.h olarak,

1
  1. karar (ilk dosya2'nin) (ana adlandırmak) file2.c fonksiyonunu tanımlayabiliriz

    hangi dosya projenizin giriş noktası olmak istersiniz.

  2. Diğer dosyada, yöntem adını başka bir adla değiştirin. Eğer programın giriş noktasıdır adım 1.

main de seçtiğiniz dosyadan diyebilirsiniz ve birden fazla giriş noktası olamaz.

daha net bir açıklama Bunu görmek için: Ben yapmak gerekir ne gibi değişiklikler, ben silerim Two 'main' functions in C/C++

İlgili konular