mirror of
https://github.com/Light-City/CPlusPlusThings.git
synced 2026-10-30 03:45:03 +08:00
- const README: rewrite the space-saving claim per issue #5 follow-ups (constant-expression const vs #define immediates; which const qualify as constant expressions) - const README: fix the class-section diagnosis per issue #338 (overload resolution picks the const overload; the restriction only surfaces once that overload is removed) - sizeof README: virtual-inheritance result is compiler-dependent (GCC merges vbptr+vfptr -> 16, MSVC keeps them separate -> 32) #246 - static README: new section on internal linkage / access restriction with anonymous-namespace comparison #142 - 10-day practice: full problem list table + fixed day links #136 - new design_pattern/singleton/singleton_default.hpp: reusable thread-safe CRTP singleton template, compile+concurrency tested #303
This commit is contained in:
20
basic_content/extern/README.md
vendored
20
basic_content/extern/README.md
vendored
@@ -1,10 +1,12 @@
|
||||
# extern "C"
|
||||
> 本文档由 [C++那些事网站](https://light-city.github.io/stories_things/cpp-things/extern/) 同步生成,网站版本含多语言与更新排版。
|
||||
|
||||
# C++ extern 链接说明
|
||||
|
||||
## 关于作者:
|
||||
|
||||
个人公众号:
|
||||
|
||||

|
||||

|
||||
|
||||
## 1.C++与C编译区别
|
||||
|
||||
@@ -118,11 +120,11 @@ int add(int x,int y);
|
||||
|
||||
上述案例源代码见:
|
||||
|
||||
- [add.h](extern_c++/add.h)
|
||||
- [add.h](https://github.com/Light-City/CPlusPlusThings/tree/master/basic_content/extern/extern_c++/add.h)
|
||||
|
||||
- [add.c](extern_c++/add.c)
|
||||
- [add.c](https://github.com/Light-City/CPlusPlusThings/tree/master/basic_content/extern/extern_c++/add.c)
|
||||
|
||||
- [add.cpp](extern_c++/add.cpp)
|
||||
- [add.cpp](https://github.com/Light-City/CPlusPlusThings/tree/master/basic_content/extern/extern_c++/add.cpp)
|
||||
|
||||
## 2.C中调用C++函数
|
||||
|
||||
@@ -166,11 +168,11 @@ gcc add.c add.o -o main
|
||||
|
||||
上述案例源代码见:
|
||||
|
||||
- [add.h](extern_c/add.h)
|
||||
- [add.h](https://github.com/Light-City/CPlusPlusThings/tree/master/basic_content/extern/extern_c/add.h)
|
||||
|
||||
- [add.c](extern_c/add.c)
|
||||
- [add.c](https://github.com/Light-City/CPlusPlusThings/tree/master/basic_content/extern/extern_c/add.c)
|
||||
|
||||
- [add.cpp](extern_c/add.cpp)
|
||||
- [add.cpp](https://github.com/Light-City/CPlusPlusThings/tree/master/basic_content/extern/extern_c/add.cpp)
|
||||
|
||||
综上,总结出使用方法,在C语言的头文件中,对其外部函数只能指定为extern类型,C语言中不支持extern "C"声明,在.c文件中包含了extern "C"时会出现编译语法错误。所以使用extern "C"全部都放在于cpp程序相关文件或其头文件中。
|
||||
|
||||
@@ -209,4 +211,4 @@ extern int add();
|
||||
```
|
||||
|
||||
|
||||
不过与C++调用C接口不同,C++确实是能够调用编译好的C函数,而这里C调用C++,不过是把C++代码当成C代码编译后调用而已。也就是说,C并不能直接调用C++库函数。
|
||||
不过与C++调用C接口不同,C++确实是能够调用编译好的C函数,而这里C调用C++,不过是把C++代码当成C代码编译后调用而已。也就是说,C并不能直接调用C++库函数。
|
||||
Reference in New Issue
Block a user