草庐IT

c++ - extern 在命名空间中如何工作?

我正在运行一个类似于我发现的简单程序here.它旨在减少在多个文件中包含常量时的代码膨胀。它通过在命名空间中使用const全局变量及其各自的extern前向声明来实现这一点。globals.h#ifndefGLOBALS_H_#defineGLOBALS_H_namespaceConstants{//forwarddeclarationsonlyexternconstdoublepi;externconstdoubleavogadro;externconstdoublemy_gravity;}#endif全局变量.cppnamespaceConstants{//actualglobal

c++ - C2732 - 链接规范错误

我正在使用VS2008。我收到以下错误。BUILD:[02:0000000295:ERRORE]c:\wince700\platform\am33x_bsp\src\bootloader\bootpart\bootpart_e.cpp(61):errorC2732:linkagespecificationcontradictsearlierspecificationfor'SdhcInitialize'{log="C:\WINCE700\platform\AM33X_BSP\SRC\BOOTLOADER\bldsys.log(103)"}BUILD:[02:0000000297:ERR

c++ - 外部变量和数组声明问题 C++

我对外部变量和数组声明有疑问。如何使用不在可声明文件中的全局变量声明数组。file1.cppconstintsize=10;主文件.cppexternconstintsize;voidmain(){intmas[size];}intmas[size];这一行有问题。请大家猜猜?? 最佳答案 你不能。数组大小必须是常量表达式;如果它是一个变量,那么该变量必须是const并在同一个翻译单元中初始化,以便它的值可用作常量。如果您想在多个翻译单元之间共享值,请在header中定义并包含它。 关于

c++ - extern 在 C++ 中如何工作?

这是来自:namespacestd{externistreamcin;///似乎通过使用extern其他命名空间中定义的数据类型是否可用? 最佳答案 extern表示“这些变量在其他一些编译单元(.cpp或.lib文件)中定义”在这种情况下,您#include进入你的.cpp文件,因为cin和cout被声明为extern,编译器会让你毫无怨言地使用它们。然后,当链接器运行时,它会查找所有extern变量并将其全部排序。 关于c++-extern在C++中如何工作?,我们在StackOve

c++ - 错误 : LNK 2019 : unresolved external symbol _imp_CrtDbgReportw in Visual Studio

我编写了一个程序,在出现相应的分隔符时拆分字符串。但是发生了一个不同的错误,例如:Error1errorLNK2019:unresolvedexternalsymbol__imp___CrtDbgReportWreferencedinfunction"public:charconst&__thiscallstd::_String_const_iterator>>::operator*(void)const"(??D?$_String_const_iterator@V?$_String_val@U?$_Simple_types@D@std@@@std@@@std@@QBEABDXZ)So

c++ - 多个定义的符号 C++ 错误

我认为ifndefsomething#definesomethingbody#endif解决了这个错误,所以我不确定为什么会这样。//Library.h#ifndef__LIBRARY__#define__LIBRARY__#include#include#include#include#include#include#include#include#include#include//fileincludes#include"Globals.h"usingnamespacestd;#endif//__LIBRARY__--//globals.h//globalvariables#ifn

c++ - 如果我将 extern "C++"与 C 工具链一起使用会怎样?

我的问题主要是关于C++工具链“理解”C和C++的事实,所以如果我将一些带有extern"C"的代码提供给C++工具链,我假设它可以理解怎么办?但是,如果我将带有extern"C++"的代码提供给C工具链呢?预期的行为是什么? 最佳答案 如果编译器还理解C++,它可能会接受它。如果它是一个纯C编译器,它将反对(就像它在extern"C"上一样,因为该语法无效C-这就是为什么它通常包含在#ifdef__cplusplus或类似的) 关于c++-如果我将extern"C++"与C工具链一起使

c++ - 外部 C 和结构方法

给定以下C++代码,#ifdef__cplusplusextern"C"{#endifstructfoo{voidgetNum(){}};#ifdef__cplusplus}#endifintmain(intargc,char*constargv[]){return0;}是否可以从C调用getNum()? 最佳答案 不,因为getNum是C中没有的成员函数。该问题的一个可能解决方案是编写一个C++函数以返回foo实例作为foo*(其中foo已更改是一个空结构)到C(我假设这是二进制编译为C链接到的C++),然后在C++中有一个自由函

C++ Unresolved external

这个问题在这里已经有了答案:Whatisanundefinedreference/unresolvedexternalsymbolerrorandhowdoIfixit?(38个答案)关闭3年前。谁知道这是什么意思?1>GeneratingCode...1>BlankWindowDXbaseImpl.obj:errorLNK2019:unresolvedexternalsymbol"public:__thiscallDXBase::DXBase(void)"(??0DXBase@@QAE@XZ)referencedinfunction"public:__thiscallBlankWin

c++ - extern"C"与 extern 的区别

我对整个header使用extern"C"说明符,还是为每个函数指定extern有区别吗?据我所知,没有,因为只有函数和变量可以外部链接,所以当我在每个函数原型(prototype)和外部变量之前使用extern说明符时,我不需要使用全局extern"C"声明!?示例A:#ifdef__cplusplusextern"C"{#endifvoidwhatever(void);#endif示例B:externvoidwhatever(void); 最佳答案 C++文件中extern"C"的存在允许从C客户端调用程序代码调用特定的C++函