小编Pau*_*jta的帖子

跨源文件一致使用类型

我花了很多时间调试一个问题,该问题原来是由两个源文件引起的,其中包括两个以不同顺序排列的头文件。其中一个头文件定义_FILE_OFFSET_BITS为 64,另一个头文件包括<sys/types.h>,定义off_t为 32 位或 64 位长,具体取决于_FILE_OFFSET_BITS. 我在下面提供了这种情况的简短示例。这是在 x86_32 Linux(Debian 不稳定版和 CentOS 4.8)上。

无论是gcc -Wall main.c other.c,还是的Solaris 9皮棉,也没有夹板检测到这种情况。

有谁知道可以检测这种情况的软件工具?

主文件

#define _FILE_OFFSET_BITS 64
#include <sys/types.h>
#include <stdio.h>

#include "header.h"

int
main(int argc, char **argv) {
    struct foo bar = {(off_t) 0, "foo"};

    showproc(&bar);
    printf("sizeof(off_t) in main.c is %d\n", sizeof(off_t));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

其他.c

#include <sys/types.h>
#define _FILE_OFFSET_BITS 64
#include <stdio.h>

#include "header.h"

void
showproc(const struct foo *p)
{
        if (p->offset == …
Run Code Online (Sandbox Code Playgroud)

c

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

标签 统计

c ×1