草庐IT

c++ - Mac OS X 10.6.8 上的 gcc-4.2.1 中不存在 strnlen - 如何定义它?

我正在构建最新dcraw.c的跨平台OSX版本我在OSX10.6.8上执行此操作以获得PPC兼容性。现在我的问题是strnlen似乎在最新版本的程序中使用,它在10.6.8上不存在,gcc给我这样的消息:Undefinedsymbolsforarchitecturei386:"_strnlen",referencedfrom:...Undefinedsymbolsforarchitectureppc:"_strnlen",referencedfrom:...所以,我只想定义strnlen,但不太清楚如何定义。问:任何人都可以提供strnlen的工作定义以在dcraw.c中使用吗?顺便说

c++ - GCC:函数包装器模板问题

我在GCC5.3上尝试让一些函数包装器代码工作,这在clang上运行良好。这是一个简化的例子:#includeusingnamespacestd;templatestructFunctionWrapper;templatestructFunctionWrapper{};staticinttestFunc(int_a,int_b){return_a+_b;}intmain(){FunctionWrapperwrapper;return0;}我在gcc上得到的错误如下:prog.cpp:9:46:error:'Ret(Args...)'isnotavalidtypeforatemplate

C++11 std::this_thread::sleep_until() 在使用 GCC 4.8.5 编译时挂起

考虑以下程序:#include#includeintmain(){std::this_thread::sleep_until(std::chrono::steady_clock::now()-std::chrono::seconds(10));return0;}当用GCC4.8.5编译时,它会挂起。用GCC4.9及以上或clang3.4及以上编译时,立即返回,为什么会挂?据我了解,GCC4.8.5完全支持C++11标准。 最佳答案 这是一个已确认的错误,已在gcc4.9中修复。https://gcc.gnu.org/bugzilla

c++ - 从子类 : gcc vs msvc 访问 protected 成员

在VisualC++中,我可以这样做:templateclassA{protected:Ti;};templateclassB:publicA{Tgeti(){returni;}};如果我尝试用g++编译它,我会得到一个错误。我必须这样做:templateclassB:publicA{Tgeti(){returnA::i;}};难道我不应该在标准C++中做前者吗?还是gcc配置错误导致出现错误? 最佳答案 这过去是允许的,但在gcc3.4中发生了变化.在模板定义中,非限定名称将不再查找依赖基的成员(如C++标准中的[temp.dep

c++ - 在 Windows 上编译 gcc 4.7

我发现我认为关于如何在Windows上编译gcc的非常好的教程http://www.aristeia.com/Misc/gcc4ForWindows.html#buildinggcc但我坚持(惊讶,惊讶)它的要点,即构建实际的gcc。只是为了让您的生活更轻松,我在这里感到震惊:configuring:#../../source/gcc-4.1.1/configure--prefix=/mingw--host=mingw32--target=mingw32--program-prefix=""--with-as=/mingw/bin/as.exe--with-ld=/mingw/bin/

c++ - gcc -Ofast - 完整的限制列表

我在我的程序中使用-Ofastgcc选项导致延迟要求。我写了一个简单的测试程序:#include#includestaticdoublequiet_NaN=std::numeric_limits::quiet_NaN();intmain(){doublenewValue=130000;doublecurValue=quiet_NaN;printf("newValue=%f\n",newValue);printf("curValue=%f\n",curValue);printf("isnan(newValue)=%d\n",isnan(newValue));printf("isnan(c

c++ - 为什么 COW std::string 优化在 GCC 5.1 中仍然启用?

根据GCC5发布更改页面(https://gcc.gnu.org/gcc-5/changes.html):Anewimplementationofstd::stringisenabledbydefault,usingthesmallstringoptimizationinsteadofcopy-on-writereferencecounting我决定检查一下并写了一个简单的程序:intmain(){std::stringx{"blah"};std::stringy=x;printf("0x%X\n",x.c_str());printf("0x%X\n",y.c_str());x[0]=

c++ - 在 gcc 中如何在运行时强制符号解析

我怀着巨大的希望在这个网站上发表的第一篇文章::我正在尝试使用gcc了解静态链接、动态链接、共享库、静态库等。每次我尝试深入研究这个主题时,我都会有一些不太明白的地方。一些实际操作:bash$catmain.c#include"printhello.h"#include"printbye.h"voidmain(){PrintHello();PrintBye();}bash$catprinthello.hvoidPrintHello();bash$catprintbye.hvoidPrintBye();bash$catprintbye.c#includevoidPrintBye(){pr

c++ - GCC 和 MSVC 之间的 digits10 差异

我有以下代码:#include#includeintmain(){std::cout::digits10GCC4.4返回19MSVS9.0返回18有人可以解释一下为什么两者之间有区别吗?无论编译器如何,我都希望这样的常量是相同的。 最佳答案 如果VisualC++2008返回18对于std::numeric_limits::digits10,这是一个错误(我没有安装VisualC++2008来验证所描述的行为)。在VisualC++中(至少对于32位和64位Windows),unsignedlonglong是64位无符号整数类型,能

c++ - 使用 gcc 调用纯虚函数时出现链接器错误

我和一个friend就对象的构造进行了非常有趣的讨论,最终得到了这段代码:#includeclassParent{public:Parent(){this->doSomething();}virtualvoiddoSomething()=0;};classChild:publicParent{intparam;public:Child(){param=1000;}virtualvoiddoSomething(){std::cout我知道标准没有定义从构造函数或析构函数调用纯虚函数时的行为,这也不是我如何在生产中编写代码的实际示例,它只是一个测试来检查什么编译器会。在Java打印中测试相