草庐IT

c++ - 在 Linux (GCC 4.6) 上聚集 C++ ifstream

上下文我正在慢慢地用C++编写一个专门的Web服务器应用程序(使用Conionhttpserverlibrary和JSONCPPlibrary进行JSON序列化,如果这很重要的话),对于带有GCC4.6编译器的Linux系统(我不关心对非Linux系统的可移植性,或对4.5之前的GCC或对3.0之前的Clang的移植)。我决定将用户“数据库”(用户会很少,大概一两个,所以性能不是问题,O(n)访问时间是可以接受的)保存为JSON格式,可能作为一个小的JSON对象数组,例如{"_user":"basile";"_crypasswd":"XYZABC123";"_email":"basil

c++ - C++/gcc/linux 中的 Continuations/Coroutines/Generators

背景:我试图通过提出这个玩具问题来弄清楚如何实现延续/协程/生成器(不管下面的名称是什么)。环境是gcc4.6和linux3.0x86_64上的C++11。不可移植很好,但不允许使用外部库(boost.coroutine、COROUTINE等)。我认为longjmp(3)和/或makecontext(2)和friend可能会有所帮助但不确定。描述:下面的玩具解析器应该解析等长的as和bs序列。即((a+)(b+))+使得第二个括号产生式的长度等于第三个。当它找到一个产生式(例如aaabbb)时,它会输出它找到的a的数量(例如3)。代码:#include#includeusingname

c - 如何在 Mac OS X 中获得与 Linux gcc/gnu crypt(3) 相同的 crypt(3) 函数? Linux gcc crypt(3) 有 MD5 和 SHA512。 Apple Gcc crypt(3) *仅* 使用 DES

我正在将一些C代码从Linux迁移到MacOSX(yosemite)。MacOSXcrypt()函数(在unistd.h中,正如我所确定的)与Linux中的gcc/gnu不同。我在Linux和MacOSX上有测试程序,如果使用printf显示结果,crypt()c-library函数会显示一个34个字符的字符串。MacOSX上的相同代码仅显示13个字符的字符串。一些研究表明,区别显然是Linuxcrypt()库例程从gnu/gccLinux端的较长vector生成哈希,可能使用不同的加密算法。一些信息还表明,AppleMacOSXc-librarycrypt()函数仅使用DES来加密原

c - Cygwin 的 GCC 与 Windows 上的 MSVC 编译器之间是否存在任何性能问题?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。大多数人在Linux上使用gcc,在Windows上使用MSVC编译器。我最近在我的Windows机器上安装了Cygwin的GCC编译器并正在使用它。我只是好奇它们之间是否存在任何性能差异?我的意思是GCC不能直接安装在Windows上,所以Cygwin包在Windows上创建了一些类似Linux的环境,然后GCC将使用它。那有什么缺点吗?Linux上的

从 gcc 的中间文件编译目标文件

通过使用-fdump-tree-*标志,可以在编译源代码文件期间转储一些中间格式文件。我的问题是是否可以使用该中间文件作为gcc的输入来获取最终目标文件。我问这个是因为我想在gimple的中间文件中添加一些代码(通过使用标志-fdump-tree-gimple获得)格式.当然,我可以使用Hook并添加我自己的通行证,但我还不想达到那种复杂程度。我只想给gcc我修改后的中间文件,这样它就可以从那里开始编译并给我最终的目标文件。有什么想法可以实现吗? 最佳答案 GIMPLE是一种二进制内部格式,很难完全转储并正确重新加载。与LLVM相比

linux - 使用 GCC 和 Egypt 生成综合调用图

我正在尝试生成一个全面的调用图(包括对Linux、运行时等的低级调用)。我用“-fdump-rtl-expand”静态编译了我的源文件并创建了RTL文件,我将其传递给一个名为Egypt的PERL脚本(我相信它是Graphviz/Dot)并生成了调用图的PDF文件.这非常有效,完全没有问题。除此之外,对某些显示为内置的库进行了调用。我想看看是否有一种方法可以不打印调用图,而是打印对库的实际调用?如果问题不清楚,请告诉我。http://i.imgur.com/sp58v.jpg基本上,我试图避免调用图生成有办法吗?--------代码----------#include#include#i

c - gcc -O2 与没有导致错误

当编译包含open("FILENAME",O_RDONLY);而没有-O2标志的文件时,一切都很好。但是当-O2打开时,我得到:/usr/include/x86_64-linux-gnu/bits/fcntl2.h:Infunction‘open’:/usr/include/x86_64-linux-gnu/bits/fcntl2.h:44:7:error:invaliduseof‘__builtin_va_arg_pack_len()’/usr/include/x86_64-linux-gnu/bits/fcntl2.h:45:26:error:callto‘__open_too_m

c - 奇怪的 gcc 警告行为

我正在开发一个linux驱动程序,我收到了这条警告消息:/home/andrewm/pivot3_scsif/pivot3_scsif.c:1090:warning:ignoringreturnvalueof‘copy_from_user’,declaredwithattributewarn_unused_result违规行是:if(copy_from_user(tmp,buf,count)查看了copy_from_user的声明,发现它返回的是一个unsignedlong,显然比较总是会失败,所以返回值不会影响比较.那部分是有道理的,但是为什么gcc不警告它是有符号/无符号比较的事实

使用 GCC 编译依赖 Open SSL 的 C 程序

我必须在linux(ubuntu)上用gcc编译一个C程序。这取决于openssl库。#include#include#include#include#include#include#include我已经从存储库下载了libcrypto和libopenssl包。但我仍然收到此错误root@kali:~/openssl#gccopensslhello.c/tmp/ccTahV7g.o:Infunction`pem2X509':opensslhello.c:(.text+0x15):undefinedreferenceto`BIO_s_mem'opensslhello.c:(.text+0

c - gcc/clang 如何假定字符串常量的地址是 32 位的?

如果我编译这个程序:#includeintmain(intargc,char**argv){printf("helloworld!\n");return0;}对于x86-64,asm输出使用movl$.LC0,%edi/callputs.(Seefullasmoutput/compileoptionsongodbolt.)我的问题是:GCC如何知道字符串的地址可以放入32位立即操作数?为什么不需要使用movabs$.LC0,%rdi(即movr64,imm64,不是零或符号扩展的imm32)。AFAIK,没有什么说加载程序必须决定在任何特定地址加载数据部分。如果字符串存储在1ULL以上