问题标签 [linkage]

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.

0 投票
1 回答
180 浏览

c++ - VC++ 2010 的另一个BUG?关于在标头中声明常量 REFERENCE

几行代码值一千字:

我有三个简单的文件:header.h、main.cpp、other.cpp

在编译最简单的项目时,VC++ 2010 报错如下:

我确信这是 VC++ 2010 的错误,因为以下两个参考:

1,C++ 标准说:(在 n3126 的第 140 页)

“声明为 const 且未显式声明为 extern 的对象具有内部链接。”

2,MSDN 说:(在:http: //msdn.microsoft.com/en-us/library/357syhfh (VS.80).aspx )

“在 C 中,常量值默认为外部链接,因此它们只能出现在源文件中。在 C++ 中,常量值默认为内部链接,这允许它们出现在头文件中。

const 关键字也可以用在指针声明中。”

0 投票
1 回答
1546 浏览

c++ - h文件中的静态关键字和内部链接

还有一个static问题。我已阅读以下内容:

而且我仍然无法理解以下行为:我有一个h文件:

还有两个cpp文件:

和:

程序的输出是:

现在,A的构造函数被调用了两次,因为h文件被包含了两次,并且由于声明了A名为的实例,它具有内部链接并且编译器很高兴。由于它也被声明为静态,它也具有内部链接,我希望它的值不会在两个文件中共享 --- 但程序输出暗示该值是共享的,因为它最多为 2。astaticcountercpp

有什么见解吗?

h编辑:在vs.文件中声明静态变量的上下文中,关于什么被认为是“良好的编程习惯”的任何答案cpp也受到欢迎。

0 投票
1 回答
1153 浏览

python - 如何在 python hcluster 中使用稀疏矩阵?

我正在尝试在 python 中使用 hcluster 库。我没有足够的 Python 知识在 hcluster 中使用稀疏矩阵。请任何人帮助我。所以,我在做什么:

data.dmp 包含的矩阵如下:

并且只包含矩阵的右上部分。我不知道如何正确拼写英文:) 所以,所有数字都高于主对角线所以 data.dmp 包含: 1 0 1, 0 1 , 0

由于我未知的原因,hcluster 使用反转值,例如如果 A!=C 我使用 0,如果 A == D 使用 1

连锁Y

所以,矩阵 Z 是我需要的(如果我正确使用了 hcluster?)

但我有下一个问题:

  1. 我想对大量输入数据使用稀疏矩阵,因为像现在这样生成输入数据很耗时,我需要从另一种语言将数据导入 python,这就是我需要读取文本文件的原因。请好心,python大师的建议如何制作?

  2. 对于使用 python hcluster 的人,我需要处理大量数据,数百行,可以在 hcluster 中完成吗?这个算法真的能产生正确的HAC吗?

感谢您的阅读,感谢您的帮助!

0 投票
1 回答
1010 浏览

c++ - 在 C++ 中包含的 C 头文件中前向声明枚举

我有向前声明枚举的 C 标头。显然,这在 C++ 中是不可能的,所以所有的预处理器都封装了表单

不会有帮助的。有什么方法可以将这些头文件包含在 C++ 翻译单元中,而无需我编辑 C 头文件?幸运的是,在这种情况下修改 C 标头以避免前向声明相对容易,但这让我觉得这是一个非常重要的问题。一般来说,我认为总是可以从 C++ 链接到 C 库,但在某些情况下,无法包含标头似乎使这种做法变得不切实际。

一些相关问题: 71416 681243

0 投票
4 回答
39133 浏览

c++ - 头文件中的 const 变量和静态初始化失败

在阅读了很多关于静态变量初始化的问题之后,我仍然不确定这如何应用于const命名空间级别的变量。

我在构建脚本生成的文件中有以下代码:config.h

根据我所读到的static关键字是没有必要的,甚至在这里不推荐使用。

我的问题:上面的代码是否容易出现静态初始化失败?

如果我在文件中有以下内容myclass.h

这会对静态初始化造成任何问题吗?

如果我理解正确,由于const变量具有内部联系,这两种情况都应该没有问题?

编辑:(由于dribeas回答)

也许我应该提到我对以下用例感兴趣:

main.cpp

关于这个用例的另一个问题:path2在这种情况下编译器会优化掉吗?

0 投票
5 回答
31279 浏览

c++ - 为什么模板不能在外部“C”块中?

这是对Is it possible to typedef a pointer-to-extern-“C”-function type 在模板中的答案的后续问题吗?

此代码无法使用g++、Visual C/C++ 和 Comeau C/C++ 编译,并出现基本相同的错误消息:

g++ 说“错误:带有 C 链接的模板”,Visual C/C++ 发出编译器错误C2894,Comeau C/C++ 说“错误:此声明可能没有外部“C”链接”。

问题是,所有人都很高兴:

C++ 标准的第 7.5 节,链接规范指出:

对于类成员的名称和类成员函数的成员函数类型,AC 语言链接被忽略。

它甚至给出了例子:

如果外部“C”块中允许模板,则实例化的成员函数将具有 C++ 链接。

那么,为什么 C++98 标准的第 14 章,模板指出:

模板名称可能具有链接 (3.5)。模板、模板显式特化 (14.7.3) 和类模板部分特化不应具有 C 链接。

模板“可能”具有链接是什么意思?什么是模板链接?

当一个类是好的并且模板实例化的所有成员函数(默认构造函数、析构函数和赋值运算符重载)都将具有 C++ 链接时,为什么明确禁止具有 C 链接的模板?

0 投票
7 回答
330 浏览

c++ - 为什么“int ClassName :: VariableName”总是需要完成链接?

为什么我必须写那(!)行,总是?

如果我不写,编译器无法完成内部链接,所以它给出(我假设)链接器错误。为什么 ?

0 投票
1 回答
738 浏览

c++ - 如何证明内联函数默认为内部链接?

如何证明类中的内联函数默认为内部链接?

换句话说/:

如何将内部链接的输出显示到控制台?

编辑:unix平台

0 投票
5 回答
1611 浏览

c - 将函数指针传递给静态函数是否可能/安全/理智?

假设我只想通过传递一个指向该函数的函数指针来从我的一个文件中公开一个函数。将该函数声明为 是否安全static?是否允许编译器执行任何会使我的函数指针无效的柔道,或者在该文件的上下文之外使其无意义,因为该函数被声明为特定于该文件?

不是我的代码,而是我的意思的一个(愚蠢的)例子:

鉴于该代码(或其语法正确cool_function_ptr的近似值),从另一个文件访问是否非法?

0 投票
2 回答
25104 浏览

c++ - extern enum in c++

I have an enum I have declared in some .h file:

in a seperate .cpp I cannot do this:

how would one do so without including the whole header where the enum is declared?