2012-01-17 34 views
7

Tôi nhận được lỗi sau: Nhiều định nghĩa của `chínhCompile-time: Nhiều định nghĩa về 'chính'

Tôi đã tạo ra một dự án mới, có hai C++ tập tin trong nó:

nộp 1

#include <iostream> 

using namespace std; 

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

tập 2

#include <iostream> 

using namespace std; 

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

Khi tôi bấm Xây dựng dự án và Run, tôi nhận lỗi. Làm cách nào để chạy các tệp này?

+0

Tôi cần phải thực hiện những thay đổi nào, tôi có xóa int chính() khỏi TẬP_TIN 2 không? – sandbox

+0

Bạn có thể thay đổi tên và gọi nó ở nơi bạn cần đến. Hoặc có các tệp trong hai dự án khác nhau. – atoMerz

+0

cho cả hai hàm này với các tên khác nhau và làm cho các đối số chính() lấy (int argc, char * argv []). Sau đó, sử dụng các đối số được truyền để xác định xem hai hàm nào của bạn sẽ gọi. – CashCow

Trả lời

11

Bạn không thể có hai chức năng chính trong cùng một dự án. Đặt chúng trong các dự án riêng biệt hoặc đổi tên một trong các chức năng và gọi nó từ chức năng chính khác.

Bạn không bao giờ có thể có nhiều hơn một hàm main() trong dự án của bạn vì nó là điểm vào, bất kể danh sách tham số là gì.

Tuy nhiên, bạn có thể có nhiều khai báo các hàm khác miễn là danh sách tham số khác nhau (function overloading).

Tập 1

#include <iostream> 

using namespace std; 

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

Tập 2

#include <iostream> 

using namespace std; 

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

Dont quên # bao gồm thích hợp.

4

Bạn không thể có hai chức năng chính. Trong thực tế, bạn không thể có bất kỳ hai chức năng có cùng một chữ ký thông qua dự án của bạn (không phải tập tin của bạn).
Và như Mr.TAMER nói chính là trường hợp đặc biệt, bạn thậm chí không thể có hai chức năng được gọi là main.

+1

Chỉ cần tiếp tục câu trả lời của AtoMerZ, 'main' là một trường hợp đặc biệt, bạn không thể có hai hàm với tên' main' cho dù danh sách tham số của chúng có khác nhau hay không. –

+0

@ Mr.TAMER: Cảm ơn. Tôi đã chỉnh sửa. – atoMerz

0

Bạn không thể sử dụng cùng một chữ ký hàm trong cùng một dự án, bởi vì trình biên dịch bắt đầu thực hiện từ chính(). Nếu bạn định nghĩa nhiều lần của hàm main() thì nó sẽ tạo ra một lỗi.

file1.c

#include <iostream> 

#include <file2.h> 
using namespace std; 

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

Và trong file2.h, bạn có thể xác định các chức năng của file2.c (đầu tiên đổi tên main() của file2)

1
  1. Quyết định tập tin bạn muốn trở thành điểm vào của dự án.

  2. Trong tệp khác, hãy đổi tên phương thức thành một tên khác. bạn có thể gọi nó từ tệp bạn đã chọn ở bước 1.

main là điểm vào của chương trình và bạn không thể có nhiều điểm nhập.

Để được giải thích rõ ràng hơn, hãy xem: Two 'main' functions in C/C++

Các vấn đề liên quan