__FILE__是保留的预处理符号宏,用于调试/记录.考虑以下示例:
// This file is called test.c
char *p = NULL;
if (!(p = malloc((1 * sizeof(char) + 1)))){
printf("Error in file: %s @ line %d
Malloc failed
", __FILE__, __LINE__);
exit(-1);
}
如果对malloc的调用失败,您将在上面的示例中看到如下输出:
Error in file: test.c @ line 23
Malloc failed
请注意,代码是如何获取原始源代码的.上面的示例说明了此用法.
我认为您的代码应如下所示:
// fileTypeTest.cpp, placed in file-5.03/src/ (source from link above)
#include
#include "magic.h"
int main(int argc, char **argv) {
if (argc > 1){
magic_t myt = magic_open(MAGIC_CONTINUE|MAGIC_ERROR/*|MAGIC_DEBUG*/|MAGIC_MIME);
magic_load(myt,NULL);
printf("magic output: '%s'
",magic_file(myt,argv[1]));
magic_close(myt);
}
return 0;
}
上面的代码检查是否有参数传递给该程序,并且该参数将是文件名,即argv [0]指向可执行文件名称(编译后的二进制文件),argv [1]指向字符数组(字符串)指示相关文件名.
要编译它:
g++ -I/usr/include -L/usr/lib/libmagic.so fileTestType.cpp -o fileTestType
g++ -L/usr/lib -lmagic fileTestType.cpp -o fileTestType
编辑:感谢Alok在这里指出错误…
如果不确定libmagic的位置,请在/usr/local/lib和/usr/local/include中查找-这取决于您的安装.
看到此内容以查找预定义的宏here.
希望这可以帮助,
最好的祝福,
汤姆.