difference between extern "C" and simply extern

This question already has an answer here:

  • What is the effect of extern “C” in C++? 12 answers

  • extern "C" simply means that the following block of code can be compiled either using C or Cpp compiler. This is done when you have a mixture of C/C++ code and you need to keep track of language-specific features. In a bit more geeky way, the C linkage becomes compatible in presence of a Cpp compiler.

    The code could be anything from a variable/typedef to a full function/module declaration.

    But if you do this:

    extern char c; // same goes true for extern int foo()
    

    it means that you are saying "I am using char c, which has a declaration external to this file". More like in another module somewhere in the search-path. This is implicitly global. In runtime, if c changes, the change is reflected everywhere. This is provided that your compiler directives such as -Iinclude_file_dirs -Ssource_file_dirs etc. are provided correctly (on GCC or g++). Using a powerful IDE such as Visual Studio 2010 or later, you can do these very easily.

    "extern" is a linkage keyword. You can combine it with "C" for compiler-specific linkage directives.


    extern "C" disables name mangling. It will allow your C++ code to call functions from library compiled by C compiler


    extern "C" int someFunction( void *ret_val);  
    

    会让someFunction有C连接。

    链接地址: http://www.djcxy.com/p/40484.html

    上一篇: extern“C”如何在C ++中工作?

    下一篇: extern“C”和extern之间的区别