问题标签 [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++ - 在带有外部“C”的 C++ 中使用 C 代码的问题
我知道当我想将 C 代码链接为 C++ 中的 C 代码时,我应该使用extern "C"
. 但是使用以下代码:
我得到这个编译时错误:
C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数。
我该如何处理?
我MSVC2017
使用MS-Windows10
.
编辑:我知道大多数使用显式返回类型声明函数,但我使用USBPcap和 USBPcap 声明一些类似的函数。我如何在我自己的 C++ 程序中使用它?
c++ - 如何将指向非静态成员方法的指针交给外部“C”函数?
我有一个名为tmc的类,它现在包含(除其他外,这里不相关)一个私有构造函数、一个静态工厂方法和一个名为的实例方法ReadLoop (void*)
:
现在的问题如下:我应该如何将ReadLoop
用作函数指针以与 中start_thread ()
包含的函数一起使用pigpiod_if2
?由于以下错误,此处显示的代码无法编译:
我在这里看到了几个带有相同错误消息的问题,但没有一个是关于指向 C 函数的非静态成员方法的指针。请注意,即使这里创建的对象是单例,我也无法将其设为ReadLoop ()
静态。我在 Raspbian Buster 上使用 g++ 6.5.0。谢谢你。
c++ - Extern 在 C++ 中使用了两次
我很好奇链接过程中会发生什么,而且,在我在这个领域的研究中,我已经刺穿了这段代码
该代码位于某个头文件中,该头文件由一个程序的 .c 和 .cpp 源文件包含。它是一个函数的声明,然后在 .cpp 文件中定义。为什么它有效?我的意思是,在 .cpp 文件的编译过程中,这将变成
外部 extern 既使函数在全局范围内可见,又将 C++ 风格的函数名转换为 C 风格。但也有内在的外在。函数被externed两次可以吗?
c++ - 使用 mingw g++ 7.2 编译、声明 ifstream 并使用 extern "C" 时出现分段错误
我正在编写一些接口代码来从 fortran 调用 c++ 例程,这就是为什么我将这些方法转储到外部“C”块中的原因。在 Windows 10 下使用 g++.exe(x86_64-win32-seh-rev1,由 MinGW-W64 项目构建)7.2.0 编译时,我在声明 ifstream 对象时遇到分段错误。我将其分解为以下代码片段:
测试仪.cpp
我正在使用以下命令进行构建:g++ tester.cpp -o tester.out -O3。该程序在使用 -O0 构建时运行正常,但在 -O1、-O2 和 -O3 时崩溃。在 Windows 下使用 msvc 和在 Linux 下使用 g++ 8.30 编译不会产生分段错误。程序崩溃需要 extern "C" 块和对 x() 的调用。
运行 gdb backtrace 会得到以下输出:
这是 mingw 的错误还是我错过了什么。std::ifstream 在 Windows 上的发布版本中崩溃,退出代码为 0xC0000409:可能与未知软件异常有关。
c++ - c++ LoadLibrary 和 GetProcAddress 来自外部 DLL
我有一个外部 DLL 可以使用。我尝试加载 DLLLoadLibrary
并通过调用来获取函数,GetProcAddress
但每次调试程序时,我都会遇到异常,我可以通过 windows 忽略它,但最后我的 main 方法也会抛出异常,并且永远不会以调用异常结束:
的定义"getrandomnum"
是:
例外情况是:
和:
和:
这个例外永远重复。
有人可以帮助我吗?
c++ - 在外部“C”声明中“玩”参数常量是否安全?
假设我正在使用一些具有函数的 C 库:
而且我知道一个事实,即foo()
不会修改 . 指向的内存str
。它只是写得不好,并没有费心声明str
它是不变的。
现在,在我的 C++ 代码中,我目前有:
我像这样使用它:
我的问题:原则上,从语言律师的角度来看,在实践中,我这样写是否安全:
并跳过const_cast
'ing?
如果不安全,请说明原因。
注意:我对 C++98 代码的情况特别感兴趣(是的,不幸的是我),所以如果你假设语言标准的更高版本,请说出来。
c++ - extern "C" 函数返回 std::array
以下代码使用 gcc 编译,但不能使用 MSVC 编译(Godbolt 链接)
一个编译器是对的,另一个是错的,还是它是实现定义的?
c++ - 将 C 与 C++ 混合使用有多普遍?
我想知道 C++ 和 C 的混合使用有多广泛。我的意思是使用 C 库/函数并在 C++ 程序中调用它,就像它是如何在这里完成的Mix C with C++一样。它在现实世界中的使用范围有多大?它是很少使用、大部分避免使用还是很常见?任何人都可以照亮它吗?