草庐IT

libarchive_static

全部标签

c++ - 在 C++ 中链接 "static"方法时出现问题

我想调用在不同文件中定义的CPP类的一些“静态”方法,但我遇到了链接问题。我创建了一个重现我的问题的测试用例,它的代码如下。(我是C++的新手,我有Java背景,我对C有点熟悉。)//CppClass.cpp#include#includestaticpthread_tthread;staticpthread_mutex_tmutex;staticpthread_cond_tcond;staticintshutdown;usingnamespacestd;classCppClass{public:staticvoidStart(){coutdisplay();}pthread_mute

c++ - "Magic static"在另一个翻译单元的静态销毁阶段引用时单例崩溃

我有一个简单的单例类。我的singleton.h文件看起来像这样:classsingleton{...public:staticsingleton&instance();};我的singleton.cpp看起来像这样:...singleton&singleton::instance(){staticsingleton*const_instance(newsingleton);return*_instance;}在编写此类时,我认为我依赖于线程安全的函数局部静态初始化,据我所知,这将在C++标准的第6.7节中列出,如here所述。.希望我明白这是如何工作的。我正在使用November20

c++ - 在 libarchive 中设置 UTF-8 路径名 header

总结我如何在C++中使用libarchive编写一个zip文件,这样路径名称将被UTF-8编码?使用UTF-8路径名时,特殊字符将在使用OSX/Linux/Windows8/7-Zip/WinZip时正确解码。详情我正在尝试使用libarchive编写一个zip存档,并在Windows上使用VisualC++2013进行编译。我希望能够将包含非ASCII字符的文件(例如äöü.txt)添加到zip存档中。libarchive中设置路径名头的函数有四个:voidarchive_entry_set_pathname(structarchive_entry*,constchar*);void

c++ - 使用 static_cast 实现的转换运算符

我在提出这个问题之后问这个问题here.要点很简单。假设您有两个此类:templateclassBase{...operatorconstDerived&()const{returnstatic_cast(*this);}...};classSpecialization:publicBase{...};然后假设你有一个像这样的类型转换:templatefunctionCall(constBase¶m){constT&val(param);...}问题是:这种转换的符合标准的行为应该是什么?应该和constT&val(static_cast(param))一样吗?还是应该递归迭代

c++ - 使用 MinGW 静态链接到 Windows 上的 libarchive

我在我的项目中使用libarchive已经有一段时间了,它工作得很好,目前我正在动态链接到它,所以在Windows上,libarchive.dll文件必须出现在系统上。我现在想静态链接到库,这样我就不必费心分发DLL,但我在尝试实现这一点时遇到了真正的麻烦!目前,在我的make文件中,我有这样的东西:-Lpath/to//libarchive/-larchive这是有效的,但它有一个动态链接。我不知道如何强制执行静态链接。我可以看到在libarchive目录中有两个a文件,libarchive.dll.a和libarchive_static.a。我想我想链接到libarchive_st

java - java函数中static const char *的等价性

我经常在C++中使用这个习语:/*returntype*/foo(/*parameters*/){staticconstchar*bar="Bar";/*somecodehere*/}在内部这被添加到字符串文字表中。这段Java代码是否做类似的事情:/*returntype*/foo(/*parameters*/){finalStringbar="Bar";/*somecodehere*/}还是我无意中引入了效率低下的问题? 最佳答案 字符串在Java中是不可变的。这意味着您不必通过提示让JVM知道它不会更改和优化它。字符串文字被保

c++ - 为什么像 static_cast 这样的运算符有一定的优先级?

Accordingtocppreference.com,theC++static_castoperator'slevelofprecedenceis2.为什么还要定义这些级别?我想不出任何理由。谁能举个例子? 最佳答案 该标准没有定义优先级;这些可以从语法派生。与任何其他语法特征一样,static_cast在此语法中占有一席之地。因为它的使用需要括号,所以它的操作数表达式永远不会有歧义,但这只意味着从语法中为它推导出优先级是没有意义的,而不是它在语法本身中的位置是没有意义的。因此,该标准在这里没有做任何疯狂的事情。毫无意义的是,无论

c++ - 为什么 C++ 引入 duration_cast 而不是使用 static_cast?

我正在查看一些使用duration_cast的代码。看着它,我想知道为什么不使用static_cast,因为static_cast在生活中的目的是在类型之间进行转换。为什么C++需要一个新的运算符来在时间之间进行转换?为什么未使用static_cast?也许我不理解C++在毫秒、微秒、纳秒等之间产生的差异。出于某种原因,我认为答案很明显或在StackOverflow上进行了讨论,但我没有找到了(还)。 最佳答案 在不存在精度损失风险的情况下,已经存在时间间隔的直接转换。duration_cast在存在精度损失风险时是必需的。dura

c++ - 是否可以确保仅在 'static initialization' 步骤期间调用函数

我想知道是否有可能确保一个函数只在程序的静态初始化步骤中被调用?举个例子,假设我有一些包含std::map对象并公开了insert和at方法的单例类它的。我想确保从中读取数据(at方法)是线程安全的,据我所知,这需要确保没有任何内容正在修改数据(即使用insert方法)。映射旨在仅在静态初始化期间填充,此时我假设只有一个线程。有什么方法可以确保在main()开始后,不会有被误导的用户调用insert吗?示例代码#include#includeclassSingleton{private:std::mapm_map;public:staticSingleton&instance(){st

c++ - 为什么 static_cast 不使用转换运算符指向 const 的指针?

来self的包装类Pointer我只想返回指向const的指针:Baseconst*.类型转换时Pointer至Derivedconst*我收到一个编译错误:errorC2440:'static_cast':'Pointer'cannotbeconvertedto'constDerived*'(译自德语VS2012)structBase{};structDerived:publicBase{};templateclassPointer{public:Pointer(T*t=nullptr):p(t){}//operatorT*(){returnp;}operatorTconst*()c