Sto usando Code::Blocks 17.12 per programmare in C, motivi universitari.
Sto creando una libreria, ma visto che varie guide online non funzionavano, mi sono fatto aiutare da un mio amico che ci era riuscito ecco cosa ho fatto:
Creo un file Header, nel caso nostro stdMat.h
In esso scrivo il seguente codice:
Poi creo un file Body ossia stdMat.cpp
In esso scrivo il seguente codice:
Poi creo un progetto nel quale includo i due file prima esposti (nel dubbio li ho messi anche direttamente nella medesima cartella).
E nel main inserisco il seguente codice:
A questo punto avvio il compilatore e mi risponde con il seguente errore:
=== Build: Debug in Project (compiler: GNU GCC Compiler) ===
In function 'int main()':
error: 'P_der' was not declared in this scope
=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===
A questo punto ho pensato che fosse un problema di come ho impostato la libreria ma ho provato ad inserire un'altra funzione correttamente sia nell'header che nel body e funzionava, ecco il codice:
nel main invece:
A questo punto ho provato ad inserire nel main la funzione ' P_der ' per capire se l'errore riguardasse la libreria.
Ecco il codice così ottenuto:
A questo punto il compilatore segnala una doppia dichiarazione della funzione P_der indicandomi sia la definizione nel main che nel Body:
===Build: Debug in Project (compiler: GNU GCC Compiler) ===
multiple definition of 'P_der(double*, double*,int ,int)'
first defined here
error: 1d returned 1 exit status
=== Build failed: 3 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===
Da cui la domanda…. "ma se prima non me la trovava nella libreria, perché ora la trova?"
Sappiate che ho imparato a programmare da un paio di mesi e non possiedo un linguaggio tecnico, vi chiedo dunque di non usare parole che non potrei capire :hihi:
PS: potrebbe leggersi quasi a metà tutto corsivo, ho controllato l'anteprima, non so come togliere questa anomalia :muro:
Sto creando una libreria, ma visto che varie guide online non funzionavano, mi sono fatto aiutare da un mio amico che ci era riuscito ecco cosa ho fatto:
Creo un file Header, nel caso nostro stdMat.h
In esso scrivo il seguente codice:
C:
#include <stdio.h>
#define NMAX 50
void P_der(double [ ],double [ ],int,int);
In esso scrivo il seguente codice:
C:
#include<stdio.h>
#include<stdlib.h>
void P_der(double [],double [],int,int);
void P_der(double a[ ],double b[ ],int n,int m){
if(n<m) {printf("\n\n\n\t//Error in P_der function - uncorrect input.//");exit(1);}
for(int i=0;i<m;i++) b[I]=a[i+1]*(i+1);
return;
}
E nel main inserisco il seguente codice:
C:
#include <stdio.h>
#include <stdlib.h> //non so se serve
#include "stdMat.h"
int main(){
double A[3]={1,2,3};
double b[2];
P_der(A,b,3,2);
return 0;
}
=== Build: Debug in Project (compiler: GNU GCC Compiler) ===
In function 'int main()':
error: 'P_der' was not declared in this scope
=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===
A questo punto ho pensato che fosse un problema di come ho impostato la libreria ma ho provato ad inserire un'altra funzione correttamente sia nell'header che nel body e funzionava, ecco il codice:
C:
void read_vet(double [ ],int);
void read_vet(double v[ ],int n){
printf("\n\nInserire componenti vettore: \n");
for(int i=0;i<n;i++) {printf(" Componente %d= ",i+1);scanf("%lf",&v[I]);}
return;}
C:
#include <stdio.h>
#include <stdlib.h>
#include "stdMat.h"
int main(){
double A[3]={1,2,3};
read_vet(A,3);
return 0;
}
Ecco il codice così ottenuto:
C:
#include <stdio.h>
#include <stdlib.h>
#include "stdMat.h"
void P_der(double a[ ],double b[ ],int n,int m){
if(n<m) {printf("\n\n\n\t//Error in P_der function - uncorrect input.//");exit(1);}
for(int i=0;i<m;i++) b[I]=a[i+1]*(i+1);
return;
}
int main(){
double A[3]={1,2,3};
double b[2];
P_der(A,b,3,2);
return 0;
}
===Build: Debug in Project (compiler: GNU GCC Compiler) ===
multiple definition of 'P_der(double*, double*,int ,int)'
first defined here
error: 1d returned 1 exit status
=== Build failed: 3 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===
Da cui la domanda…. "ma se prima non me la trovava nella libreria, perché ora la trova?"
Sappiate che ho imparato a programmare da un paio di mesi e non possiedo un linguaggio tecnico, vi chiedo dunque di non usare parole che non potrei capire :hihi:
PS: potrebbe leggersi quasi a metà tutto corsivo, ho controllato l'anteprima, non so come togliere questa anomalia :muro:
Ultima modifica da un moderatore: