#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
уже определено где-то еще.