(在继续之前,
没有释放代码和编写从未在代码中使用的变量,
旨在测试工具)
我编写了这样的代码和这样的 Makefile:
unread_two.h
#ifndef __UNREAD_TWO_H
#define __UNREAD_TWO_H
const int SIZEOF_INT = sizeof(int);
int addTwo();
unread_twomain.c
#include <stdio.h>
#include <stdlib.h>
#include "unread_two.h"
int main(int argc, char *argv[])
{
int *x;
x = (int *)malloc(SIZEOF_INT);
x = addTwo();
free(x);
return 0;
}
unread_two.c
#include <stdio.h>
#include <stdlib.h>
#include <unread_two.h>
int addTwo()
{
int *y, *z, sum;
y = (int *)malloc(SIZEOF_INT);
z = (int *)malloc(SIZEOF_INT);
*y = 3;
sum = *y + *y;
return sum;
}
生成文件
CC=gcc
CCFLAGS=-g
%.o: %.c
$(CC) -c $< $(CCFLAGS)
all: unread_two
clobber: clean
rm -f *~ \#`\# core
clean:
rm -f unread_two *.o
unread_two: unread_twomain.o unread_two.o
unread_twomain.o: unread_two.h
unread_two.o: unread_two.h
当我全部制作时,会出现以下消息:
unread_twomain.o:(.rodata+0x0): multiple definition of `SIZEOF_INT'
unread_two.o:(.rodata+0x0): first defined here
collect2: error: ld returned 1 exit status
我应该解决哪些问题?