thread_create: ошибка ошибка: необъявленный ‘cpu’ (первое использование в этой функции)

#c #multithreading

#c #многопоточность

Вопрос:

У меня такая проблема с потоком C: я включил cpu.h в основной файл, почему эта ошибка сохраняется??

main.c

 #include <stdio.h>                      
#include <sys/types.h>                      
#include <sys/stat.h>                       
#include <fcntl.h>                      
#include <unistd.h>                         
#include <string.h>                         
#include <stdlib.h>                         
#include <pthread.h>

#include "funzioni.h"
#include "ram.h" 
#include "cpu.h" 
#include "err.h"
......
......
rc = pthread_create (amp;threads[i] , NULL ,cpu, (void*)amp;parametri_thread_cpu[i] );
 

ошибка: необъявленный ‘cpu’ (первое использование в этой функции)

Я включаю cpu.h в main.c

cpu.h

 #ifndef FUNZIONI_H
#define FUNZIONI_H
void *cpu(void *thread_arg);
#endif
 

мой Makefile

 # Sources
SRCS= err.c funzioni.c cpu.c ram.c main.c
OBJS=$(SRCS:.c=.o)
EXECUTABLE=main.x

# Config
CC=gcc
CFLAGS= -c
LIBS= -lpthread
LD=gcc

# Target

all: clean $(EXECUTABLE)


clean:
@echo Cleaning old files
@rm -f *.o *.x

$(EXECUTABLE): $(OBJS)
@echo -------------Building $@
@ $(LD) -o $@ $^ $(LIBS)

err.o: err.c err.h
@echo -------------Building $@
@ $(CC) $(CFLAGS) -o $@

lt;

funzioni.o: funzioni.c funzioni.h
@echo -------------Building $@
@ $(CC) $(CFLAGS) -o $@


lt; $(LIBS)

cpu.o: cpu.c cpu.h funzioni.h err.h
@echo -------------Building $@
@ $(CC) $(CFLAGS) -o $@


lt; $(LIBS)

ram.o: ram.c ram.h funzioni.h err.h
@echo -------------Building $@
@ $(CC) $(CFLAGS) -o $@


lt; $(LIBS)

main.o: main.c ram.h cpu.h funzioni.h err.h
@echo -------------Building $@
@ $(CC) $(CFLAGS) -o $@


lt; $(LIBS)

.PHONY: all clean

это мой makefile для компиляции кода

Комментарии:

1. Этого не может произойти, если вы действительно включили его. Опубликуйте весь соответствующий код и способ его компиляции.

2. Я включил в main.c # включить «cpu.h» .. для компиляции у меня есть makefile

3. Покажите нам, что находится в файле makefile, покажите, что вы используете для его вызова, и покажите включение — все эти вещи должны быть отредактированы в вашем ответе.

4. добавить makefile моего кода

Ответ №1:

Вы скопировали свои включаемые защиты из другого включаемого файла «funzioni.h».

измените его на CPU_H или аналогичный.

Ответ №2:

Я предполагаю, что включение-защита в cpu.h #ifndef FUNZIONI_H уже определено где-то еще.