gpt4 book ai didi

当包含在某些文件中而不是其他文件中时,C header 会导致错误

转载 作者:太空宇宙 更新时间:2023-11-04 02:19:03 25 4
gpt4 key购买 nike

标题几乎说明了一切。似乎是其根源的准确错误消息是:

util.h:4: error: expected declaration specifiers or ‘...’ before ‘size_t’

有问题的 header 是:

#ifndef UTIL_H
#define UTIL_H

void print_array(void*, int, size_t, void (*)(void*));
extern void print_int(void*);
extern void print_float(void*);

#endif /* UTIL_H */

如果我使用 gcc -Wall -c util.c 编译以下文件,编译器会自动创建一个目标文件。

#include <stdio.h>
#include "util.h"

void print_array(void* a, int length, size_t size, void (*print)(void*)) {
unsigned int i;
for (i = 0; i < length; i++) {
print(a + i*(unsigned int)size);
}
printf("\n");
}

void print_int(void* i) {
int* a = (int*) i;
printf(" %i ", *a);
}

void print_float(void* f) {
float* a = (float*) f;
printf(" %f ", *a);
}

如果我将它包含在任何其他文件中,我会收到上述错误和其他一些错误。我提供的那个排在第一位。我用谷歌搜索过的所有内容都说这是前一行语法错误的结果,但它是在文件中的第一行 时发生的。我可以看到,如果我消除了这个错误,那么所有其他错误都会消失,因为它们与 print_array 被调用时使用了错误的参数数量或类型(这不是).

最佳答案

在包含 stddef.h 之前,

size_t 不会被定义。您的标题可能应该首先包含它以保证它已定义。 (就目前而言,你只是变得“幸运”并且有其他最终将首先定义它的包含,所以它不会引起问题。)

关于当包含在某些文件中而不是其他文件中时,C header 会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3641178/

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