2010-07-25 36 views
24

Tôi có một chương trình C++ (.cpp) bên trong mà tôi muốn sử dụng một số hàm có mặt trong các tệp tiêu đề C như stdio.h, conio.h, stdlib.h , graphics.h, devices.h etc.Bao gồm các tiêu đề C bên trong một chương trình C++

Tôi có thể bao gồm thư viện stdio.h bên trong tệp cpp của tôi là: #include <cstdio>. Làm cách nào để bao gồm các tệp thư viện khác?

Làm cách nào để thêm thư viện graphics.h?

Tôi đang sử dụng Microsoft Visual Studio 6.0 Enterprise Edition và cũng có thể sử dụng Turbo C++ 3.0.

+1

này có vẻ giống như soi mói, hoặc nó của tôi là một lỗi ngữ pháp nhỏ, nhưng lỗi này thường chỉ ra một sự hiểu lầm cơ bản của liên kết C. Bạn không thể bao gồm một tệp thư viện. Bạn có thể bao gồm tệp tiêu đề. Tiêu đề không phải là thư viện. Thư viện không phải là tiêu đề. Bạn có thể bao gồm tiêu đề graphics.h và sau đó bạn phải liên kết với thư viện có API được chỉ định trong tiêu đề. –

Trả lời

43

Để biết danh sách các tiêu đề C chuẩn C (stdio, stdlib, assert, ...), hãy thêm c và loại bỏ .h. Ví dụ stdio.h trở thành cstdio.

Đối với tiêu đề khác, sử dụng

extern "C" 
{ 
    #include "other_header.h" 
} 
3

Chỉ cần bao gồm chúng bên trong một khối extern "C" chúng sẽ hoạt động như mong đợi.

3

Tôi không chắc chắn những gì bạn cần chính xác, nhưng nếu bạn muốn sử dụng chức năng C cũ thời bên trong bạn chương trình C++, bạn dễ dàng có thể bao gồm họ bằng cách loại bỏ. h và thêm tiền tố "c".

ví dụ nếu bạn muốn bao gồm math.h sử dụng

#include <cmath> 
1

Bạn có thể #include họ sử dụng tên ban đầu của họ. #include <stdio.h> hoạt động tốt trong C++.

+0

Các tiêu đề C chuẩn được yêu cầu làm việc trong C++ chuẩn, mặc dù bạn có thể đặt nhiều hơn mức bạn thích vào không gian tên chung. Các tiêu đề không chuẩn, như conio.h hoặc graphics.h, có thể không được thiết lập đúng cách và có thể cần được gói trong 'extern" C "{...}'. Kiểm tra tài liệu triển khai của bạn. –

26
#ifdef __cplusplus 
extern "C" 
{ 
#endif 

// your functions here for the header 

#ifdef __cplusplus 
} 
#endif 

Định dạng này sẽ giúp bạn sử dụng các tập tin tiêu đề cho cả C và C++ mà không cần bất kỳ vấn đề ...

Hope this helps ... :)

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