gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:45:15 25 4
gpt4 key购买 nike

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

的库
#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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com