问题标签 [extern-c]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 为什么我们需要 extern "C"{ #include在 C++ 中?
为什么我们需要使用:
具体来说:
我们应该什么时候使用它?
在需要我们使用它的编译器/链接器级别发生了什么?
这在编译/链接方面如何解决需要我们使用它的问题?
c++ - 是否可以在 C++ 中对 C 结构进行子类化并在 C 代码中使用指向该结构的指针?
这样做是否有副作用:
C代码:
C++ 代码:
extern "C"
C++ 代码周围有一个,每个代码都在它自己的编译单元内。
这可以跨编译器移植吗?
c++ - 静态与外部“C”/“C++”
静态成员函数和外部“C”链接函数有什么区别?例如,在 C++ 中使用“makecontext”时,我需要传递一个指向函数的指针。Google 建议使用外部“C”链接,因为“makecontext”是 C。但我发现使用静态也可以。我只是幸运还是...
对比
编辑:您能否展示静态成员版本不起作用的编译器或体系结构(并且它不是编译器中的错误)?
c++ - extern "C" 在 C 中是否有任何影响?
我刚刚得到一些使用 extern "C" 来声明外部函数的 C 代码,如下所示:
这是有效的C吗?我在这一行遇到错误,但我不确定是因为这个还是其他原因。
c++ - C++中extern "C" 的作用是什么?
放入 C++ 代码到底有什么作用extern "C"
?
例如:
c++ - 何时在 C++ 中使用外部“C”?
我经常看到编码如下的程序:
为什么我们要使用extern "C"
块?我们可以用 C++ 中的东西替换它吗?使用有什么好处extern "C"
吗?
我确实看到了一个解释这一点的链接,但是当我们已经有了 C++ 时,为什么我们需要用 C 编译一些东西?
c++ - 仅在函数声明中需要 extern "C" 吗?
我编写了一个需要从 C 程序调用的 C++ 函数。为了使它可以从 C 中调用,我extern "C"
在函数声明中指定了。然后我编译了 C++ 代码,但是编译器 (Dignus Systems/C++) 为函数生成了一个错误的名称。所以,它显然没有兑现extern "C"
.
为了解决这个问题,我添加extern "C"
了函数定义。在此之后,编译器生成了一个可从 C 调用的函数名。
从技术上讲,extern "C"
唯一需要在函数声明中指定。这是正确的吗?(C++ FAQ有一个很好的例子。)你是否也应该在函数定义中指定它?
下面是一个例子来证明这一点:
我的问题可能是错误编码的结果,或者我可能发现了编译器错误。无论如何,我想咨询 stackoverflow 以确保我知道在技术上哪个是“正确”的方式。
c++ - 外部“C”声明如何工作?
我正在学习编程语言课程,我们正在讨论extern "C"
声明。
除了“它接口 C 和 C++”之外,这个声明如何在更深层次上工作?这又如何影响程序中发生的绑定?
c++ - 为什么 C++ 回调 C 函数需要“extern C”?
我在 Boost 代码中找到了这样的例子。
为什么你真的需要这个extern "C"
?
很明显,该thread_proxy
函数是私有的内部函数,我不希望它被修改为“thread_proxy”,因为我实际上根本不需要它。
事实上,在我编写并在许多平台上运行的所有代码中,我从未使用过extern "C"
,而且这与正常功能一样工作。
为什么要extern "C"
添加?
我的问题是extern "C"
函数污染了全局命名空间,它们实际上并没有像作者期望的那样隐藏。
这不是重复的! 我不是在谈论修饰和外部链接。在这段代码中很明显不需要外部链接!
答: C 和 C++ 函数的调用约定不一定相同,所以需要创建一个具有 C 调用约定的。请参阅 C++ 标准的 7.5 (p4)。
c++ - 如何从 C 调用 C++ 函数?
我知道这个。
从 C++ 调用 C 函数:
如果我的应用程序是用 C++ 编写的,并且我必须从用 C 编写的库中调用函数。那么我会使用
这不会破坏名称C_library_function
,链接器会在其输入 *.lib 文件中找到相同的名称,问题就解决了。
从 C 调用 C++ 函数???
但是在这里我扩展了一个用 C 编写的大型应用程序,我需要使用一个用 C++ 编写的库。C++ 的名称修改在这里造成了麻烦。链接器正在抱怨未解析的符号。好吧,我不能在我的 C 项目上使用 C++ 编译器,因为那会破坏很多其他东西。出路是什么?
顺便说一句,我正在使用 MSVC