Название в значительной степени говорит само за себя.Точное сообщение об ошибке, которое, кажется, является его корнем:
util.h: 4: ошибка: ожидаемые спецификаторы объявления или '...' перед 'size_t'
Обсуждаемый заголовок:
#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);
}
Если я включу его слюбой другой файл, я получаю вышеупомянутую ошибку и кучу других.Тот, который я предоставил, идет первым.Все, что я нашел в Google, говорит о том, что это является результатом синтаксической ошибки в предыдущей строке, но это происходило, когда это была первая строка в файле.Я вижу, что если я получу эту ошибку, то все остальные исчезнут, поскольку они связаны с тем, что print_array
вызывается с неправильным числом или типом аргументов (а это не так).