Tag: 包含

gcc -o stdlib.h语法错误c攻击剥削艺术

我正在使用VM(虚拟机箱)运行其附带的LiveCD(Ubuntu 7.04),从第二版Jon Erickson的“黑客:剥削艺术”开始。 在第0x272节“使用堆”中,作者使用第77-79页上的示例解释了malloc()和free()函数。 heap_example.c的代码如下: #include #include #include int main(int argc,char *argv[]){ char *char_ptr; int *int_ptr; int mem_size; if(argc ‘%s’\n”,char_ptr,char_ptr); printf(“\t[+]allocating 12 bytes of memory on the heap for int_ptr\n”); int_ptr = (int *)malloc(12); if(int_ptr == NULL){ fprintf(stderr,”Error:could not allocate heap memory.\n”); exit(-1); } *int_ptr = 31337; printf(“int_ptr (%p)–> %d\n”,int_ptr,*int_ptr); printf(“\t[-]freeing char_ptr’s heap memory…\n”); free(char_ptr); […]

C中的#import和#include有什么区别?

我已经阅读了一些关于预处理器指令的内容,并且我已经看到#import在C程序中被使用了几次。 我不确定它们之间有什么区别,有些网站说#include只用于头文件,而#import在Java中使用更多,在C中不推荐使用。 如果是这种情况,为什么有些程序仍然使用#import,它与#include有何不同? 另外,我在我的一些C程序中使用了#import,它看起来工作得很好并且与#include做同样的事情。

何时在一个文件中多次包含相同的标题是有用的?

我正在阅读一个文件中相同标题的多个包含,并找到一个有趣的声明( 链接 ): 如果您有意多次包含头文件,那么有两个带头文件的技巧(这实际上提供了一个有用的function)。 据我所知,这些技巧可能在实际项目中不受欢迎和困惑(特别是因为人们会采取预防措施来防范多种内容,例如包括警卫和#pragma once )。 但是,那些技巧是什么? 我提出了一些想法,但希望看到一些实际的例子(理想情况下,安全和尝试)。 我的想法: C中的伪模板,其中模板参数被预处理器定义替换。 它可以在没有包含的情况下完成,但function可能太大或太多,因此制作单独的文件是有意义的。 逐块结构/类构造(连接片段)。 在使用公共成员定义结构时,它可以帮助模拟C中的inheritance并防止代码重复。 查找表和其他编译时数据结构(同样,借助预处理器定义)。

尝试使用/ include /编译第三方库,libmagic。 C / C ++文件类型检测

在寻找一种方法来检测文件流的文件类型之后,我发现Unix 文件命令使用了libmagic,我试图自己使用这个库,但我无法让它工作。 我很少在我自己中集成第三方代码,所以这可能也是我问题的重要部分。 为什么: 我这样做是因为我有一个便携式gui图像查看应用程序,需要从给定的文件名中检测存档文件类型(rar,zip,more?),然后检测内部的图像文件类型。 我希望我可以在Windows和Linux(和Mac)上使用libmagic,所以如果不是这样,请立即停止我b / c我需要找到别的东西。 尝试: 我发现有人做了类似的事情 ,但我不能按照他们正在做的事情,而且我不知道如何编译/运行任何东西来开始搞乱。 我的第一直觉是做以下事情: // fileTypeTest.cpp, placed in file-5.03/src/ (source from link above) #include #include “magic.h” int main() { magic_t myt = magic_open(MAGIC_CONTINUE|MAGIC_ERROR/*|MAGIC_DEBUG*/|MAGIC_MIME); magic_load(myt,NULL); printf(“magic output: ‘%s’\n”,magic_file(myt,__FILE__)); magic_close(myt); return 0; } 然后编译类似于: $ gcc magic.c -o magic.o $ g++ fileTypeTest.cpp -o fileTypeTest magic.o 哪个(显然?)不起作用。 我甚至不知道从哪里开始寻找,要问什么问题,或者这是否是首先解决我原来问题的正确方向。 编辑:现在我有 #include […]