sexta-feira, 16 de maio de 2008

Gerando arquivo objeto com cc

Para dividir um arquivo em .h e .c, normalmente utiliza-se arquivos .o, arquivos ojetos.

Dividi o arquivo 2.c em 2 um, 2.c e outro 2.h

o arquivo 2.h é:














/* arquivo 2.h*/


#include "stdio.h"

#include "stdlib.h"

void *calloc2(int multiplicador, int Nbytes);




e o arquivo 2.c é:

#include "2.h"

void *calloc2(int multiplicador, int Nbytes)
{/* Retorna um ponteiro com multiplicador*Nbytes bytes alocados */
void *p;
p = (void*)calloc(multiplicador, Nbytes);
if(p == NULL)
{
printf("!!!ERRO FALHA NA ALOCAÇÃO!!! ");
return NULL;
}

else
//printf("\n calloc2\n");
return p;
}


int main()
{

printf("\n Alocando memória no 2.c \n ");
int *p = (int*)calloc2(1,sizeof(int));
if(p == NULL)
exit(1);
printf("\n Memoria alocada! \n\n ");
printf("\n Liberando a memoria! \n\n ");
free(p);
printf("\n Memoria liberada! \n\n\n\n ");

p = (int*)calloc(1,sizeof(int));
if(p == NULL)
{
printf("!!!ERRO FALHA NA ALOCAÇÃO!!!");
exit(1);
}
printf("\n Memoria alocada! \n\n ");
printf("\n Liberando a memoria! \n\n ");
free(p);
printf("\n Memoria liberada! \n\n\n\n ");

printf("\n Alocando memória \n ");
p = (int*)calloc2(1,sizeof(int));
if(p == NULL)
exit(1);
printf("\n Memoria alocada! \n\n ");
printf("\n Liberando a memoria! \n\n ");
free(p);
printf("\n Memoria liberada! \n\n\n\n ");

return 0;
}


dei um:

# cc -o 2a 2.c

# ./2a


E o resultado foi:



Alocando memória no 2.c

Memoria alocada!


Liberando a memoria!


Memoria liberada!




Memoria alocada!


Liberando a memoria!


Memoria liberada!




Alocando memória

Memoria alocada!


Liberando a memoria!


Memoria liberada!



Para grar o arquivo 2.o :

# cc -c 2.c

Nenhum comentário: