整数のアドレスを関数に渡してポインタとして受け取ろうとすると、コンパイラ エラーが発生します。これは以前は機能していましたが、Makefile に変更を加えたところ、機能しなくなりました。構文かどうかは疑問ですが、次のとおりです。
helper_funcs.h
void make_passive_connections(int *sockfd, Neighbor *neighbor, FILE *logfd, char this_router[64], struct sockaddr_in servAddr);
helper_funcs.c
void make_passive_connections(int *sockfd, Neighbor *neighbor, FILE *logfd, char this_router[64], struct sockaddr_in servAddr) {
...
}
呼び出しプログラムで
int sockfd;
...
make_passive_connections(&sockfd, &neighbor, logfd, this_router->label, &servAddr, &num_hosts);
...
}
コンパイラーは、あまりにも多くの引数を渡していることも教えてくれます。コンピューターの調子が悪い日ですか、それとも私が見落としているものですか?
役立つ場合は、これが私の Makefile です。
CC = gcc
CFLAGS = -c -g -Wall -Wextra
SOURCES = fork.c helper_funcs.c primary.c
DEPS = primary.h fork.h helper_funcs.h
OBJECTS = $(SOURCES:.c=.o)
EXECUTABLE = primary
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(OBJECTS) -o $@
#.c.o:
# $(CC) $(CFLAGS) $< -o $@
%.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
clean:
rm -f *.o
rm -f $(EXECUTABLE)
警告: 'make_passive_connections' の引数 1 を互換性のないポインター型から渡しています
編集:私はばかです。関数呼び出しの最後の引数を削除するのを忘れました。しかし、私の主な問題は、整数へのポインタを期待する関数に整数のアドレスを渡すことが機能していないとコンパイラが考える理由です。それは何か問題がありますか?