相关疑难解决方法(0)

在C中,是否可以将导出的函数名称更改为不同的名称?

所有.

我想链接一个调用malloc()函数的库.但是,我的目标环境是不同的,并 malloc()作为内联函数提供.

如何将库的调用malloc()指向我的目标环境的malloc()例程?

是否可以更改导出的函数名称?如果是这样,我可以my_malloc()先编码并将其导出为malloc()并将库链接到该库:

#include <my_environment.h>  // malloc() is inline function declared there 
void my_malloc (void) {
   malloc (void);             
}
Run Code Online (Sandbox Code Playgroud)

更具体地说,该库是来自linux发行版的库,因此它依赖于libc.但我的环境嵌入了一个,没有libc库和malloc(),free()......是定制的实现.一些是内联函数,一些是库函数.

c linker inline static-linking

13
推荐指数
1
解决办法
3787
查看次数

如何覆盖标准的libc函数?

例如,如果我想覆盖malloc(),那么最好的方法是什么?

目前我所知道的最简单的方法是:

malloc.h所

#include <stdlib.h>
#define malloc my_malloc
void* my_malloc (size_t size);
Run Code Online (Sandbox Code Playgroud)

foob​​ar.c但是

#include "malloc.h"

void foobar(void)
{
    void* leak = malloc(1024);
}
Run Code Online (Sandbox Code Playgroud)

这种方法的问题是我们现在必须使用"malloc.h"并且永远不能使用"stdlib.h".有没有解决的办法?我特别感兴趣的是导入第三方库而不修改它们,但是强迫它们调用我的自定义libc函数(比如malloc).

c malloc overriding libc

6
推荐指数
1
解决办法
7072
查看次数

在C中使用标准函数名称

我正在编写一个名为nauty的程序.该程序使用规范函数名称getline,它也是标准GNU C库的一部分.

是否有可能在编译时告诉GCC使用这个程序定义的函数?

c gcc standard-library

4
推荐指数
1
解决办法
266
查看次数

我可以在调试时准确控制函数返回的内容(即 rand())吗?

假设我有以下几行代码:

int a = rand();
int b = rand();
int c = rand(); 
Run Code Online (Sandbox Code Playgroud)

在调试时,有什么方法可以使 'rand()' 分别返回 1、2、3 到变量 a、b 和 c?

如果不是(我认为可能是这种情况),是否有一种简单的 Ctrl-F 替换方法,我可以在调试时对这些值进行硬编码?

c random debugging mocking

2
推荐指数
1
解决办法
97
查看次数