2130得票17回答
在C++中,extern "C"有什么作用?

extern "C"在C++代码中的作用是什么? 例如:extern "C" { void foo(); }

150得票11回答
为什么在C++中需要使用extern "C"{ #include <foo.h> }?

我们为什么需要使用:extern "C" { #include &lt;foo.h&gt; } 具体来说: 我们应该在什么情况下使用它? 编译器/链接器层面上发生了什么需要我们使用它? 从编译/链接的角度来看,这如何解决需要使用它的问题?

69得票10回答
确定C可执行文件名称

当我们编译C程序时,输出结果会存储在a.out中。如何将编译后的输出重定向到另一个文件? 答案: 使用重定向运算符 ">" 将输出重定向到另一个文件,例如: gcc program.c -o program ./program > output.txt 上述命令将编译程序的输出重定向到名为o...

58得票5回答
在C语言中,static和extern有什么区别?

在C语言中,static和extern有什么区别?

53得票3回答
在"C"头文件中声明的静态函数

在IT技术中,我通常会把静态函数定义和声明放在源文件中,也就是.c文件中。 然而,在极少数情况下,我看到有人将其声明在头文件中。由于静态函数具有内部链接性,我们需要在每个包含声明该函数的头文件的文件中定义它。这看起来很奇怪,并且与我们通常声明静态内容的想法相去甚远。 另一方面,如果有人尝试...

50得票8回答
关于不一致的dll链接

我应该如何移除这个链接警告?你可以查看导致这个警告的代码段。static AFX_EXTENSION_MODULE GuiCtrlsDLL = { NULL, NULL }; //bla bla // Exported DLL initialization is run in context ...

44得票1回答
ld-linux.so.2和linux-gate.so.1是什么?

当我运行ldd program命令时,会得到如下输出: linux-gate.so.1 =&gt; (0xb77ae000) libstdc++.so.6 =&gt; /lib/libstdc++.so.6 (0xb76bc000) libm.so.6 =&gt; /l...

40得票3回答
constexpr和static constexpr全局变量的区别

在C++11标准中,当在头文件中定义constexpr和static constexpr全局变量时,它们之间有什么区别?更具体地说,当多个翻译单元包含相同的头文件时,哪个声明(如果有)可以保证在所有翻译单元中定义相同的变量? 例如: cexpr.h:#ifndef CEXPR_H #def...

40得票7回答
当一个名称或类型拥有特定的语言联系时,这意味着什么?

根据 ANSI ISO/IEC 14882:2003 的规定(第127页): 链接规范是可以嵌套的。当链接规范嵌套时,最内层的规范决定了所使用的语言。链接规范并不确定作用域。链接规范只能出现在命名空间范围(3.3)。在链接规范中,指定的语言链接适用于声明引入的所有函数声明符、函数名和变量名的...

30得票6回答
作用域中的结构体和函数定义

据我所知,这在C语言中是合法的: foo.cstruct foo { int a; }; bar.cstruct foo { char a; }; 但是对于函数来说,这样做是不合法的: foo.cint foo() { return 1; } bar.cint foo...