10得票4回答
extern和extern "C"用于变量的声明

我正在为一个C程序编写C++共享库。但是,我有关于extern和extern "C"的问题。 请考虑以下代码: 我的头文件如下:#ifdef __cplusplus extern "C" int global; extern "C" int addnumbe...

8得票1回答
C++中非整数常量是如何工作的?

我知道在C++中,常量默认情况下与变量具有不同的链接。这就是为什么我不能放置的原因。 int foo; 在某些头文件中,链接器会正确地抱怨多个定义。另一方面,我可以写。 const int bar = 42; 在头文件中,编译器会确保只有一个 bar 的定义。对于整数常量,编译器如...

26得票5回答
程序静态链接到库,但仍需要dll才能运行。

涉及到链接时有些事情我不是很明白...我正在使用第三方库GEOS来编写程序。这个程序依赖于geos.lib,但仍然需要geos.dll才能运行。 我读了这个问题,我认为我理解了静态库和动态库之间的区别。但我不明白的是,为什么当我静态链接一个库时,仍然需要一个dll。

8得票2回答
架构x86_64找不到符号 - Cmake - Mac Sierra

最近我开始了一个C++项目。问题是,当我尝试编译它时,会出现链接错误。今天我花了一整天时间试图调试它,但我没有在任何地方找到一个好的解决方案。如果有人能帮忙的话,那就太棒了。我正在使用Mac Sierra。 parsing/methylation.h #ifndef EPIRL_METHY...

8得票1回答
能否针对语言链接专门化模板?

函数的语言链接是其类型的一部分: 根据ISO C++标准7.5.1 [dcl.link]规定: 所有函数类型、函数名和变量名的默认语言链接都是C++语言链接。即使两个函数类型在其他方面完全相同,如果它们具有不同的语言链接,则它们是不同的类型。 是否可能在函数指针的链接类型上特化模板,...

29得票4回答
C和C++中默认全局变量的链接性、多次声明和定义问题

例如: 代码1.c / .cpp int a; // ... and so on code2.c / .cpp int a; int main(void) { return 0; } 前往编译: $gcc code1.c code2.c # this is...

16得票2回答
GCC和clang在C++标准中与[basic.link]/7相关的结果相互矛盾

这段代码可以在clang编译通过。namespace A { void f() { void g(); g(); } } void A::g() { } 但是GCC只有在g被定义在命名空间A内才会接受该代码,如下所示:namespace A {...

9得票1回答
依赖于模板的名称解析不应查找无链接声明?

在C++标准[ temp.point ]中写道: “依赖于模板参数的表达式的实例化上下文是在同一翻译单元中在模板特化的实例化点之前声明的具有外部链接的声明集。” 然后在[temp.dep.candidate]中: “对于使用相关命名空间进行查找的部分([basic.lookup.argd...

11得票1回答
最新的gcc出现了未定义引用问题

我尝试使用gcc 12.1.0编译以下代码时出现了链接时错误。但是,使用clang、msvc和旧版gcc进行编译时,结果如预期。template<typename T> void def() {} template<void (*foobar)() = def<int...

11得票2回答
模板非类型参数

$14.3.2 - "...一个非类型,非模板的模板参数的模板参数必须是以下之一: ...一个指向具有静态存储期和外部或内部链接的对象或具有外部或内部链接的函数的地址的常量表达式(5.19)..." 在下面的代码中,我不明白为什么'name2'和'name3...