如果我的函数来自另一个.c,我是否可以从调用它的位置知道文件和函数的名称?

问题描述

我正在开发一个库,我想知道一些有关我提供的功能之一的调用者的数据。特别是,我需要知道文件名,函数名和调用函数(重新定义的malloc)的行。

编辑:这是一个最小的工作示例,在此示例中,我可以检测到用户何时调用malloc并将其“重定向”到我自己的malloc函数:

main.c:

#include <stdio.h>
#include <stdlib.h>
#include "myLib.h"

int main(){
    printf("Inside main,asking for memory\n");

    int *p = malloc(sizeof(int));
    *p = 3;

    free(p);

    return 0;
}

myLib.c:

#include "myLib.h"

void * myAlloc (size_t size){
    void * p = NULL;

    fprintf(stderr,"Inside my own malloc\n");
    
    p = (malloc)(size);

    return p;
    
}
#undef malloc
#define malloc(size) myAlloc(size)

myLib.h:

#ifndef MYLIB_H
#define MYLIB_H

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

#define malloc(size) myAlloc(size)

void * myAlloc(size_t size);
#endif

我尝试使用_ FILE _ _ _ func _和_ LINE _关键字,但是由于该原因,我无法使其正常工作在另一个模块中。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)