gpt4 book ai didi

c - 我应该在库调用中使用我自己的 typedef 吗?

转载 作者:太空宇宙 更新时间:2023-11-04 00:20:56 24 4
gpt4 key购买 nike

我目前正在 Linux 中进行一些网络编程,为此我为自己制作了一些 typdefs 以实现可移植性

typedef char int8;
typedef unsigned char uint8;

typedef short int16;
typedef unsigned short uint16;

typedef int int32;
typedef unsigned int uint32;

现在我想为常用的套接字函数编写一些包装函数。一个简短的例子是:

int32 rawSocketCreate(int* sockfd, int protocol) {

*sockfd = socket(AF_PACKET, SOCK_RAW, htons(protocol));

if (*sockfd == -1) {
printf("Error creating raw socket\n");
return -1;
}

return 0;
}

我现在的问题是:对于我传递给库函数的参数,我应该继续使用标准数据类型还是也使用我自己的数据类型?

rawSocketCreate(int* sockfd, int protocol)
/* OR */
rawSocketCreate(int32* sockfd, int32 protocol)

最佳答案

C 讨厌...有什么问题 <stdint.h> 以及它提供的标准 typedef?每个人似乎都在使用自己发明的 typedef,但几乎没有人使用标准 include(它带有适当的宏来处理 printf()scanf() 等)...


如果 API 调用需要 int ,你应该传递给它 int , 不假设所述 int 的原始宽度(因为假设往往会在最不幸的时刻崩溃)。

仅当确切的宽度很重要时才使用定义宽度的 typedef。 (例如结构布局的跨平台二进制兼容性、硬件驱动程序……)

关于c - 我应该在库调用中使用我自己的 typedef 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25564715/

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