且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

编译错误 - 最有可能很容易,但我找不到什么是错的。

更新时间:2023-11-20 11:51:52

make all

make all-recursive

make [1]:输入目录`/ home / sune / gnu-ws / rsd2''

制作所有藏品

make [2]:输入目录`/ home / sune / gnu-ws / rsd2 / collections''

gcc -g -O2 -o collections_test DynamicString.o test_main.o

test_main.o(.rodata + 0x0):在函数t1中:

/home/sune/gnu-ws/rsd2/collections/test_main.c:12:多重定义

ofDynamicString_SUCCESS'

DynamicString.o(.rodata + 0x0):/ home / sune / gnu-ws / rsd2 / collections / DynamicString.c: 10:

首先在这里定义

test_main.o(.rodata + 0x4):在函数`t1'':

/ home / sune /gnu-ws/rsd2/collections/test_main.c:12:多重定义

ofDynamicString_ERROR'

DynamicString.o(.rodata + 0x4):/ home /sune/gnu-ws/rsd2/collections/DynamicString.c:10:

fir st定义在这里

collect2:ld返回1退出状态

make [2]:*** [collections_test]错误1

make [2 ]:离开目录`/ home / sune / gnu-ws / rsd2 / collections''

make [1]:*** [all-recursive]错误1

make [1]:离开目录`/ home / sune / gnu-ws / rsd2''

make:*** [all]错误2


****************这是我的DynamicString.c文件的开头

************* >
#include< string.h>

#include< stdlib.h>

#include< assert.h>


#include" DynamicString.h"

static const int FILE_ID = 0;


inline void DynamicString_init( DynamicString * string_obj,int trace_id



{

string_obj-> stack_string [0] =''\ 0'';

string_obj-> heap_string = 0;

string_obj-> string = 0;

string_obj-> size = 0;

string_obj-> capacity = DynamicString_stack_string_size;


}


****************这里是我的DynamicString.h文件的开头

*************

#ifndef DYNAMICSTRING_H_

#定义DYNAMICSTRING_H_

#include< stddef.h>


#include" ../ config.h" //不要担心相对路径,我会

修复它...


const int DynamicString_ERROR = 0;

const int DynamicString_SUCCESS = 1;

enum {DynamicString_stack_string_size = 256};


typedef struct DynamicString_

{

char stack_string [DynamicString_stack_string_size];

char * heap_string;

char * string;

size_t size;

size_t容量;

} DynamicString;


****************这里是我的test_main.c文件的开头

*************

#include< stdio.h>

#include< string.h>


#include" debug / Debug.h"

#include" collections / DynamicString。 h"


int

t1(int),t2(int),t3(int),t4(int),t5(int),t6( int),t7(int),t8(int),t9(int),t10(int);

int(* func [])(int)= {t1,t2,t3,t4 ,t5,t6,t7,t8,t9,t10};


//初始
int t1(int trace_id)

{

DynamicString string;

DynamicString_init(& string,trace_id);

返回1; //不能失败!

}

make all
make all-recursive
make[1]: Entering directory `/home/sune/gnu-ws/rsd2''
Making all in collections
make[2]: Entering directory `/home/sune/gnu-ws/rsd2/collections''
gcc -g -O2 -o collections_test DynamicString.o test_main.o
test_main.o(.rodata+0x0): In function `t1'':
/home/sune/gnu-ws/rsd2/collections/test_main.c:12: multiple definition
of `DynamicString_SUCCESS''
DynamicString.o(.rodata+0x0):/home/sune/gnu-ws/rsd2/collections/DynamicString.c:10:
first defined here
test_main.o(.rodata+0x4): In function `t1'':
/home/sune/gnu-ws/rsd2/collections/test_main.c:12: multiple definition
of `DynamicString_ERROR''
DynamicString.o(.rodata+0x4):/home/sune/gnu-ws/rsd2/collections/DynamicString.c:10:
first defined here
collect2: ld returned 1 exit status
make[2]: *** [collections_test] Error 1
make[2]: Leaving directory `/home/sune/gnu-ws/rsd2/collections''
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/sune/gnu-ws/rsd2''
make: *** [all] Error 2

**************** Here is the beginning of my DynamicString.c file
*************
#include <string.h>
#include <stdlib.h>
#include <assert.h>

#include "DynamicString.h"

static const int FILE_ID = 0;

inline void DynamicString_init( DynamicString* string_obj, int trace_id
)
{
string_obj->stack_string[0] = ''\0'';
string_obj->heap_string = 0;
string_obj->string = 0;
string_obj->size = 0;
string_obj->capacity = DynamicString_stack_string_size;

}

**************** Here is the beginning of my DynamicString.h file
*************
#ifndef DYNAMICSTRING_H_
#define DYNAMICSTRING_H_

#include <stddef.h>

#include "../config.h" // Don''t worry about the relative path, I''ll
fix it...

const int DynamicString_ERROR=0;
const int DynamicString_SUCCESS=1;
enum { DynamicString_stack_string_size = 256 };

typedef struct DynamicString_
{
char stack_string[ DynamicString_stack_string_size ];
char* heap_string;
char* string;
size_t size;
size_t capacity;
} DynamicString;

**************** Here is the beginning of my test_main.c file
*************
#include <stdio.h>
#include <string.h>

#include "debug/Debug.h"
#include "collections/DynamicString.h"

int
t1(int),t2(int),t3(int),t4(int),t5(int),t6(int),t7 (int),t8(int),t9(int),t10(int);
int (*func[])(int) = { t1,t2,t3,t4,t5,t6,t7,t8,t9,t10 };

// Init
int t1( int trace_id )
{
DynamicString string;
DynamicString_init( &string, trace_id );
return 1; // Can''t fail!
}


Sune写道:
Sune wrote:
Debug.h


那是什么?

int
t1(int),t2(int),t3(int), t4(int),t5(int),
t6(int),t7(int),t8(int),t9(int),t10(int);
Debug.h
What''s that?
int
t1(int),t2(int),t3(int),t4(int),t5(int),
t6(int),t7(int),t8(int),t9(int),t10(int);


>
这应该是什么?

它看起来像是复数原型的尝试(没有这样的东西)。


-

pete



What''s that supposed to be?
It looks like an attempt at plural prototypes (no such thing).

--
pete


pete< pf ***** @ mindspring.com>写道:
pete <pf*****@mindspring.com> writes:
Sune写道:



[...]


[...]

int
t1(int),t2(int),t3(int),t4(int),t5(int),
t6(int),t7(int),t8(int),t9(int), t10(int);
int
t1(int),t2(int),t3(int),t4(int),t5(int),
t6(int),t7(int),t8(int),t9(int),t10(int);



那应该是什么?
它看起来像是在尝试复数原型(没有这样的东西)。



What''s that supposed to be?
It looks like an attempt at plural prototypes (no such thing).




实际上,我认为这是合法的。


-

Keith Thompson(The_Other_Keith) ks *** @ mib.org < http://www.ghoti.net/~kst>

San迭戈超级计算机中心< *> < http://users.sdsc.edu/~kst>

我们必须做点什么。这是事情。因此,我们必须这样做。



Actually, I think it''s legal.

--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.