Michael Birkmose wrote:
> Martin Moller Pedersen wrote:
>
>> In <b9qges$hl5$1@sunsite.dk> Michael Birkmose <birkmose@cs.auc.dk>
>> writes:
>>
>>
>>> Troels Thomsen wrote:
>>>
>>>>>> Har du prøvet med gcc i stedet for? g++ er c++, mens gcc er ansi C.
>>>>>
>>>>>
>>>>> jep og det dur.
>>>>> Men jeg har behov for at kunne bruge det fra noget c++ kode :(
>>>>>
>>>>
>>>>
>>>> Hvad med at kompilere fibonacci i gcc så du får en lib fil.
>>>> I C++ koden inkluderer du headeren og kompilerer din kode
>>>> I linkeren skriver du de to lib filer
>>>>
>>>> P.s. er ikke stærk i gcc/g++ i praksis
>>>>
>>>> mvh Troels
>>>>
>>>>
>>>
>>> Hejsa,
>>
>>
>>
>>> Det hjælper vel ikke så meget nar nu de library jeg ville lave har et
>>> interface, som c++ ikke tillader?
>>
>>
>>
>>
>> Proev at poste koden her. Det kan ikke tage lang tid at fixe det, saa
>> det kan kompilere med g++, hvis det kompilerer med gcc.
>>
>> /Martin
>
> Hejsa,
>
> Først er der kommandoen jeg forsøger, og næst er der cat -n fibtest.c
> Det ser ud til at g++ har problemmer med (void)* :(
>
> ------------------
> birkmose@fire2
/fib-1.1> g++ -I. -o fibtest fibtest.c libfib.a
> fibtest.c: In function `int main()':
> fibtest.c:20: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:21: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:22: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:23: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:24: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:29: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:31: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:32: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:33: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:38: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:39: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:44: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:45: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:46: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:47: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:52: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:53: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:58: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:59: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:64: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> fibtest.c:69: ANSI C++ forbids implicit conversion from `void *' in
> argument passing
> --------------------------
> 1 #include <stdio.h>
> 2 #include <stdlib.h>
> 3 #include "fib.h"
> 4
> 5 int main(void)
> 6 {
> 7 struct fibheap *a;
> 8 void *arr[10];
> 9 int i;
> 10
> 11 a = fh_makekeyheap();
> 12
> 13 for (i=1 ; i < 10 ; i++)
> 14 {
> 15 arr[i]= fh_insertkey(a,0,(void *)i);
> 16 printf("adding: 0 %d \n",i);
> 17 }
> 18
> 19 printf(" \n");
> 20 fh_replacekey(a, arr[1],-1);
> 21 fh_replacekey(a, arr[6],-1);
> 22 fh_replacekey(a, arr[4],-1);
> 23 fh_replacekey(a, arr[2],-1);
> 24 fh_replacekey(a, arr[8],-1);
> 25
> 26 printf("value(minkey) %d\n",fh_minkey(a));
> 27 printf("id: %d\n\n", (int)fh_extractmin(a));
> 28
> 29 fh_replacekey(a, arr[7],-33);
> 30 /* -> node 7 becomes root node, but is still pointed to by
> node 6 */
> 31 fh_replacekey(a, arr[4],-36);
> 32 fh_replacekey(a, arr[3],-1);
> 33 fh_replacekey(a, arr[9],-81);
> 34
> 35 printf("value(minkey) %d\n",fh_minkey(a));
> 36 printf("id: %d\n\n", (int)fh_extractmin(a));
> 37
> 38 fh_replacekey(a, arr[6],-68);
> 39 fh_replacekey(a, arr[2],-69);
> 40
> 41 printf("value(minkey) %d\n",fh_minkey(a));
> 42 printf("id: %d\n\n", (int)fh_extractmin(a));
> 43
> 44 fh_replacekey(a, arr[1],-52);
> 45 fh_replacekey(a, arr[3],-2);
> 46 fh_replacekey(a, arr[4],-120);
> 47 fh_replacekey(a, arr[5],-48);
> 48
> 49 printf("value(minkey) %d\n",fh_minkey(a));
> 50 printf("id: %d\n\n", (int)fh_extractmin(a));
> 51
> 52 fh_replacekey(a, arr[3],-3);
> 53 fh_replacekey(a, arr[5],-63);
> 54
> 55 printf("value(minkey) %d\n",fh_minkey(a));
> 56 printf("id: %d\n\n", (int)fh_extractmin(a));
> 57
> 58 fh_replacekey(a, arr[5],-110);
> 59 fh_replacekey(a, arr[7],-115);
> 60
> 61 printf("value(minkey) %d\n",fh_minkey(a));
> 62 printf("id: %d\n\n", (int)fh_extractmin(a));
> 63
> 64 fh_replacekey(a, arr[5],-188);
> 65
> 66 printf("value(minkey) %d\n",fh_minkey(a));
> 67 printf("id: %d\n\n", (int)fh_extractmin(a));
> 68
> 69 fh_replacekey(a, arr[3],-4);
> 70
> 71 printf("value(minkey) %d\n",fh_minkey(a));
> 72 printf("id: %d\n\n", (int)fh_extractmin(a));
> 73
> 74 printf("value(minkey) %d\n",fh_minkey(a));
> 75 printf("id: %d\n\n", (int)fh_extractmin(a));
> 76
> 77 fh_deleteheap(a);
> 78
> 79 return 0;
> 80 }
>
Og her er fib.h:
--------- 1 /*-
2 * Copyright 1997, 1998-2003 John-Mark Gurney.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or
without
6 * modification, are permitted provided that the following
conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above
copyright
11 * notice, this list of conditions and the following
disclaimer in the
12 * documentation and/or other materials provided with the
distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS
IS'' AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE
17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 * $Id: fib.h,v 1.10 2003/01/14 10:11:30 jmg Exp $
27 *
28 */
29
30 #ifndef _FIB_H_
31 #define _FIB_H_
32
33 struct fibheap;
34 struct fibheap_el;
35 typedef int (*voidcmp)(void *, void *);
36
37 /* functions for key heaps */
38 struct fibheap *fh_makekeyheap(void);
39 struct fibheap_el *fh_insertkey(struct fibheap *, int, void *);
40 int fh_minkey(struct fibheap *);
41 int fh_replacekey(struct fibheap *, struct fibheap_el *, int);
42 void *fh_replacekeydata(struct fibheap *, struct fibheap_el *,
int, void *);
43
44 /* functions for void * heaps */
45 struct fibheap *fh_makeheap(void);
46 voidcmp fh_setcmp(struct fibheap *, voidcmp);
47 void *fh_setneginf(struct fibheap *, void *);
48 struct fibheap_el *fh_insert(struct fibheap *, void *);
49
50 /* shared functions */
51 void *fh_extractmin(struct fibheap *);
52 void *fh_min(struct fibheap *);
53 void *fh_replacedata(struct fibheap *, struct fibheap_el *, void *);
54 void *fh_delete(struct fibheap *, struct fibheap_el *);
55 void fh_deleteheap(struct fibheap *);
56 struct fibheap *fh_union(struct fibheap *, struct fibheap *);
57
58 #ifdef FH_STATS
59 int fh_maxn(struct fibheap *);
60 int fh_ninserts(struct fibheap *);
61 int fh_nextracts(struct fibheap *);
62 #endif
63
64 #endif /* _FIB_H_ */
---