2011-02-26 39 views
33

Tôi muốn viết các hàm C trong 2 tệp .c riêng biệt và sử dụng IDE (các khối mã) để biên dịch mọi thứ lại với nhau.Cách tách chương trình C thành nhiều tệp?

Làm cách nào để thiết lập điều đó trong các khối mã?

Làm cách nào để gọi hàm trong một tệp .c từ bên trong tệp khác?

+0

IDE của bạn là gì? – Simon

+3

Tôi không thấy làm thế nào điều này có thể có thể được bất kỳ vaguer. Bạn đã thử bất cứ điều gì chưa? Bạn có biết ngôn ngữ C? Bạn có biết tiêu đề là gì không? –

+6

Nếu bạn không nhận thức được điều này: c thường được biên dịch, trong khi nói về * "gọi [ing] tập tin để sử dụng chúng" * có một ngôn ngữ thông dịch cảm thấy nó. Luồng công việc cho các ngôn ngữ được biên dịch hơi khác so với các ngôn ngữ thông dịch (mặc dù nhiều IDE sẽ ẩn sự khác biệt với bạn). – dmckee

Trả lời

88

Câu hỏi này rất mơ hồ, tôi nghĩ bạn có nghĩa là "cách tách các chức năng trong các tệp .c khác nhau và để IDE biên dịch mọi thứ cùng nhau". Nếu tôi sai (ví dụ: bạn có nghĩa là "cách sử dụng các hàm được xác định trong các tệp .c từ chính IDE"), chỉ cần cho tôi biết trong các nhận xét và tôi sẽ rất vui khi cập nhật/xóa câu trả lời của tôi.

Nói chung, bạn nên xác định các chức năng trong hai riêng biệt .c file (nói, A.cB.c), và đưa nguyên mẫu của họ trong các tiêu đề tương ứng (A.h, B.h, nhớ include guards).

Bất cứ khi nào trong .c tệp bạn cần sử dụng các chức năng được xác định trong một .c khác, bạn sẽ #include tiêu đề tương ứng; sau đó bạn sẽ có thể sử dụng các chức năng bình thường.

Tất cả các tệp .c.h phải được thêm vào dự án của bạn; nếu IDE hỏi bạn có phải biên dịch hay không, bạn chỉ nên đánh dấu .c để biên dịch.

nhanh Ví dụ:

Functions.h

#ifndef FUNCTIONS_H_INCLUDED 
#define FUNCTIONS_H_INCLUDED 
/* ^^ these are the include guards */ 

/* Prototypes for the functions */ 
/* Sums two ints */ 
int Sum(int a, int b); 

#endif 

Functions.c

/* In general it's good to include also the header of the current .c, 
    to avoid repeating the prototypes */ 
#include "Functions.h" 

int Sum(int a, int b) 
{ 
    return a+b; 
} 

Main.c

#include "stdio.h" 
/* To use the functions defined in Functions.c I need to #include Functions.h */ 
#include "Functions.h" 

int main(void) 
{ 
    int a, b; 
    printf("Insert two numbers: "); 
    if(scanf("%d %d", &a, &b)!=2) 
    { 
     fputs("Invalid input", stderr); 
     return 1; 
    } 
    printf("%d + %d = %d", a, b, Sum(a, b)); 
    return 0; 
} 
+0

Tôi sử dụng các khối mã – amin

+0

vâng, bạn có quyền – amin

+0

nếu tôi muốn sử dụng tệp .c tôi cũng nên tạo tệp tiêu đề (.h)! – amin

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