小编Aji*_*nan的帖子

呼叫者功能的打印名称

我发现__FUNCTION__宏将给出当前正在执行的函数的名称,但是有没有可用的宏来打印父函数的名称(调用当前正在运行的函数的函数)?

void print_error_message(const char *msg)
{
    printf("%s : %s\n",__FUNCTION__,msg);
}

int main()
{
    print_error_message("failed to connect");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

上面的程序将给出输出:

print_error_message : failed to connect
Run Code Online (Sandbox Code Playgroud)

但是我真正需要的是

main : failed to connect
Run Code Online (Sandbox Code Playgroud)

因为main()被调用 print_error_message()

我不想将另一个参数传递给print_error_message()像这样的函数print_error_message(__FUNCTION__, msg),我期望的是类似的宏或函数来检索调用方函数的名称。

c linux macros c89

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

printf()函数如何知道其参数的类型

考虑以下程序,

#include <stdio.h>
int main()
{
    char a = 130;
    unsigned char b = 130;

    printf("a = %d\nb = %d\n",a,b);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该程序将显示以下输出。

a = -126
b = 130
Run Code Online (Sandbox Code Playgroud)

我的问题是printf()函数如何知道如上所示的带符号的a类型和b无符号的类型?

c printf gcc

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

二进制格式反序列化

我有两个程序,一个是用 C 编写的,另一个是用 C# 编写的。在C#程序中,我使用BinaryFormatter().Serialize()方法序列化数据模型,然后通过TCP套接字将序列化的二进制流发送到C程序。现在在C程序中,我想提取数据,以便我想知道如何BinaryFormatter().Serialize()生成字节流的格式。我想用 C 编写一个反序列化器函数,用于重新生成BinaryFormatter().Serialize()C# 中序列化的数据。有可用的文档或信息吗?

.net c c# binaryformatter

-1
推荐指数
1
解决办法
138
查看次数

标签 统计

c ×3

.net ×1

binaryformatter ×1

c# ×1

c89 ×1

gcc ×1

linux ×1

macros ×1

printf ×1