16得票1回答
一个lambda函数能够具有extern "C"链接吗?

我尝试过的平台似乎可以使用这个: #include <iostream> // extern "C" linkage extern "C" void foo(void (*fn_ptr)(int)); namespace { struct bar { static...

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

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

16得票1回答
在头文件中使用static关键字和内部链接

又是一个关于静态变量的问题。 我已经阅读了以下内容: 什么是静态变量? 文件作用域和静态浮点数 http://msdn.microsoft.com/en-us/library/s1sb61xd.aspx 但我仍然无法理解以下行为: 我有一个h文件:// StaticTest.h #in...

16得票1回答
模板类的方法是否隐含内联链接?

模板类的方法是否暗示使用 inline 链接(不是指内联优化),或者仅仅是模板方法?// A.h template<typename T> class A { public: void func1(); // #1 v...

16得票4回答
为什么在这里使用extern "C"组合C++类(不是头文件)?

我正在搜索SVM库并遇到了BudgetedSVM。 在源代码中,我发现了一种不寻常的用法,就像这样:#sample.h #ifndef SAMPLE_H #define SAMPLE_H //no header included or namespace declared here #i...

15得票4回答
头文件中的const变量和静态初始化问题

在阅读了很多关于静态变量初始化的问题之后,我仍然不确定如何将其应用于命名空间级别的const变量。 我在一个由构建脚本生成的头文件config.h中有以下代码:static const std::string path1 = "/xyz/abc"; static const std::str...

15得票2回答
你可以在不同的翻译单元中拥有相同名称和相同成员函数的两个类吗?

假设我有两个翻译单元://A.cpp class X { }; //B.cpp class X { int i; }; 上述程序是否格式良好? 如果不是,那么就没有更多的问题了。如果答案是肯定的,那么这个程序是格式良好的(忽略main函数的缺失),那么就会有第二个问题。假如在这些函数中...

14得票6回答
类具有外部链接吗?

我有两个文件A.cpp和B.cpp,它们看起来像这样:A.cpp ---------- class w { public: w(); }; B.cpp ----------- class w { public: w(); }; 我在某个地方(https://en.cppre...

13得票2回答
C++ 警告:使用无链接的匿名类型声明变量

当我在编译这个示例时(使用gcc 4.6.3,ubuntu),我看到了这个警告信息:struct { } a; int main() { } warning: anonymous type with no linkage used to declare variable ‘<an...

13得票1回答
声明一个具有C调用约定但内部链接的C++函数。

我正在尝试与一个期望我提供回调函数指针的C库进行接口交互。根据标准,据我所知,由于可能存在不同的调用约定,回调函数必须具有C语言链接。我可以通过将我的回调函数声明为extern "C"来实现这一点。然而,这会产生一个不良的副作用:将函数的未限定且未编译的名称暴露给其他翻译单元。 是否可能声明...