我发现__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),我期望的是类似的宏或函数来检索调用方函数的名称。
考虑以下程序,
#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 编写的,另一个是用 C# 编写的。在C#程序中,我使用BinaryFormatter().Serialize()方法序列化数据模型,然后通过TCP套接字将序列化的二进制流发送到C程序。现在在C程序中,我想提取数据,以便我想知道如何BinaryFormatter().Serialize()生成字节流的格式。我想用 C 编写一个反序列化器函数,用于重新生成BinaryFormatter().Serialize()C# 中序列化的数据。有可用的文档或信息吗?