Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 21 kết quả

Đề tài: extern "C" có nghĩa gì?

  1. #1
    Ngày gia nhập
    10 2007
    Bài viết
    4

    Mặc định extern "C" có nghĩa gì?

    Khi trong chương trình có dòng khai báo như trên thì nó có ý nghĩa gì. Và cách sử dụng như thế nào. Bạn nào rành về cái này xin chỉ cho mình với. Xin cám ơn nhiều nhiếu.

  2. #2
    Ngày gia nhập
    05 2007
    Nơi ở
    HCMC
    Bài viết
    60

    Trong C, khi 1 biến đi sau từ khóa "extern" có nghĩa là:
    - Nó là tham chiếu của một biến cùng tên nào đó, đã được định nghĩa bên ngoài
    - Biến được tham chiếu phải được khai báo ở cấp độ cao nhất (toàn cục), và có thể nằm trong một file khác

    Ví dụ:
    Code:
    int i;	//i là biến toàn cục, tạm gọi là i-thứ-thiệt ;)
    
    //hàm in ra i-thứ-thiệt
    void Show()
    {
        printf("%d", i);
    }
    
    void main()
    {
        extern int i;  //tham chiếu của i-thứ-thiệt
    
        i = 10;   //gán i-thứ-thiệt = 10
    
        Show();  //in ra: 10
    }

  3. #3
    Ngày gia nhập
    06 2007
    Nơi ở
    một nơi xa xăm...
    Bài viết
    127

    Em hoàn toàn đồng ý với ý kiến của anh sonhn.Tuy nhiên em chưa thấy kiểu khai báo : extern "C" bao giờ.Vì đi sau extern thường là một biến hoặc một hàm.Còn "C" ở đây là một xâu ! ?

  4. #4
    Ngày gia nhập
    10 2007
    Bài viết
    4

    Đúng vậy. Bạn sonhn trả lời hoàn toàn đúng. Tuy nhiên việc sử dụng kiểu khai báo: extern "C" là rất khó, không đơn giản như những kiểu khai báo extern thông thường. Tôi đã thấy rất nhiều đoạn code viết như vậy. Vd như đoạn code này:
    extern "C" {
    void SetData( PatternData *PatternData, MemoryData *MemoryData );
    void MakeData( PatternData *PatternData, MemoryData *MemoryData, char *PatternData_Memory );
    void Out_testdt( char *PatternData_Memory );
    }
    Sau khi khai báo như trên, thì chương trình thoải mái gọi 3 hàm đã được khai báo ở trên. Trong khi nội dung của 3 hàm trên thì đươc định nghĩa ở 1 file .c khác. Tôi đã thử bắt chước cách làm như thế ma k được.(^_^)
    Mời các bạn đóng góp ý kiến thêm.

  5. #5
    Ngày gia nhập
    07 2006
    Nơi ở
    Hà nội
    Bài viết
    204

    Hình như extern "C" liên quan đến tương thích C và C++
    Life:\> dir

  6. #6
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Mặc định extern "C" có nghĩa gì?

    extern "C" { block of definitions } đễ tắt C++ name mangling cho các definitions trong block.

  7. #7
    Ngày gia nhập
    10 2007
    Bài viết
    4

    Bạn TQN có thể giải thích rõ hơn tí nữa được không. Tớ vẫn chưa hiểu lắm.

  8. #8
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Cậu search với Google hay MSDN "C++ name mangling", chịu khó đọc sẽ hiễu.

  9. #9
    Ngày gia nhập
    11 2007
    Bài viết
    1

    Ồ, nếu bạn nào quen lập trình trong môi trường Unix/Linux thì sẽ thấy khai báo này thường xuyên thôi mà, nhận xét cuối là bạn sonhn nói đúng đó.
    Trong wiki cũng nói mà http://en.wikipedia.org/wiki/External_variable
    Đã được chỉnh sửa lần cuối bởi bachbk : 16-12-2007 lúc 01:10 AM.

  10. #10
    Ngày gia nhập
    10 2008
    Nơi ở
    sài gòn
    Bài viết
    422

    extern "C" rất hay gặp với DLL

Các đề tài tương tự

  1. nghĩa của 3 từ "principals", "artifacts", "securables" là như thế nào?
    Gửi bởi ntbao trong diễn đàn English for IT | Tiếng anh cho dân CNTT
    Trả lời: 1
    Bài viết cuối: 29-09-2012, 11:29 AM
  2. Lỗi "must declare a body because it is not marked abstract or extern" khi build bằng C# 2008?
    Gửi bởi Promise Forever trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 30-11-2011, 11:34 AM
  3. Lỗi : error LNK2005: "extern "C" void __cdecl PropVariantInit(struct tagPROPVARIANT *)" (?PropVariantInit@@$$J0YAXPA
    Gửi bởi truongvu trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 14-09-2011, 02:52 AM
  4. Phân biệt "Công nghệ", "Ngôn ngữ", "Công cụ" trong thế giới lập trình
    Gửi bởi nhuan07 trong diễn đàn Thắc mắc chung
    Trả lời: 2
    Bài viết cuối: 09-06-2011, 08:45 AM
  5. Ý nghĩa của từ khóa extern "C"
    Gửi bởi kenzso trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 23-12-2010, 10:10 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn