c - mcheck.h 在 Windows 中缺失,但在 Linux 中不存在

标签 c visual-c++ gcc cygwin mingw

我一直在尝试运行一个代码,它需要一个名为

的库
#include <mcheck.h>

显然这个库是 gnulib 的一部分:

http://man7.org/linux/man-pages/man3/mcheck.3.html https://www.gnu.org/software/gnulib/manual/html_node/mcheck_002eh.html http://en.wikipedia.org/wiki/Mtrace

所以我希望它在 gcc 中。所以我创建了一个简单的代码如下:

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <mcheck.h>
int main()
{
    printf("salam");
}

而且我在不同的环境中运行。在 Linux 中,它工作正常,但我无法使用我使用的任何技巧在 Windows 中制作。 Windows 中的 gcc 包含这个库吗?

这是使用 gcc 制作的图像。 gcc版本是: gcc 版本 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)

enter image description here

这里是cygwin的失败,gcc版本:gcc version 4.9.2 (GCC) enter image description here

使用内部 GNU gcc 编译器的失败代码块 enter image description here

Visual Studio 2012 失败: enter image description here

MinGW 与 gcc 版本 4.8.1 失败: enter image description here

最佳答案

这个 header 是特定于 GNU 的,在 Windows 上不存在。在 Windows 中实现其功能将很困难,因为这需要 Hook 到 visual studio 编译器附带的 malloc() 实现。

幸运的是,这并不重要。由于所有这些函数所做的都是一致性检查,您可以简单地将 stub 添加到您的项目中,它们什么都不做并且总是报告成功。

/* mcheck.h */
#ifndef __MCHECK_H
#define __MCHECK_H

enum mcheck_status
{
  MCHECK_DISABLED, MCHECK_OK, MCHECK_FREE, MCHECK_HEAD, MCHECK_TAIL
};

int mcheck (void (*abortfunc)(enum mcheck_status mstatus));
int mcheck_pedantic (void (*abortfunc)(enum mcheck_status mstatus));
void mcheck_check_all ();
enum mcheck_status mprobe (void *ptr);

#endif

/* mcheck.c */
#include "mcheck.h"

int mcheck (void (*abortfunc)(enum mcheck_status mstatus))
{
    return 0;
}

int mcheck_pedantic (void (*abortfunc)(enum mcheck_status mstatus))
{
    return 0;
}

void mcheck_check_all ()
{
}

enum mcheck_status mprobe (void *ptr)
{
    return MCHECK_OK;
}

关于c - mcheck.h 在 Windows 中缺失,但在 Linux 中不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28133219/

相关文章:

c - 使用 RPC 的原因

c++ - 错误 C2660 : 'std::allocator<char>::allocate' : function does not take 2 arguments

gcc - 错误 : ‘avcodec_send_packet’ was not declared in this scope

无法在 GCC crunchbang 中编译 x86

c - 错误 : request for member ‘check’ in something not a structure or union

有人能帮我解释一下这行代码的含义吗?

c - printf 显示错误的输出,行尾有奇怪的问号 [C]

c++ - Visual Studio sizeof() 区别 IntelliSense 与编译时

visual-c++ - 在 mfc 中单击按钮时更改编辑框内容

c++ - 如何清除gdb命令屏幕?