004
03.03.2008, 00:21 Uhr
0xdeadbeef
Gott (Operator)
|
Häng mal hinter die printf-Anweisung direkt ein fflush(stdout);, vielleicht hängt der Output noch im Buffer fest.
Übrigens, in createMatrix ist die Zeile
C++: |
for(j=0; j<c; j++) m->data[i][j] = 0;
|
überflüssig, calloc (im Gegensatz zu malloc) gibt genullten Speicher zurück.
Was das Linken von C-Code an C++-Module angeht, wenn du ein mit extern "C" deklariertes C-Interface exportierst, ist das überhaupt kein Problem. Natürlich können die exportierten Funktionssignaturen keine C++-spezifischen Dinge enthalten, wie etwa Klassen oder Exception-Spezifikationen, weil C damit nichts anfangen kann, es ist aber ohne weiteres möglich, etwas in der Art zu machen:
C++: |
// c-compat.h #ifndef INCLUDED_C_COMPAT_H #define INCLUDED_C_COMPAT_H
#include <stddef.h>
#ifdef __cplusplus extern "C" #endif
typedef void *matrix_t;
matrix_t matrix_new(size_t x, size_t y); void matrix_delete(matrix_t m);
#ifdef __cplusplus } #endif
#endif
// c-compat.cpp #include "c-compat.h" #include "matrix.hpp"
matrix_t matrix_new(size_t x, size_t y) { return reinterpret_cast<matrix_t>(new matrix(x, y)); }
void matrix_delete(matrix_t m) { delete reinterpret_cast<matrix*>(m); }
|
-- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |