linuxのMakefile使用

2036 ワード

ちょうどlinuxを学んでMakefileまで下りて、自分で楽しみます.
fun.cファイル

  1 /******fun.c********/
  2 
  3 #include <stdio.h>
  4 #include <stdarg.h>
  5 #include <stdlib.h>
  6 #include "a.h" 
  7 int add(int a, int b){
  8     if(a > 100 && b > 100)
  9       ERROR(-1, "  :a=%d,b=%d    100
", a, b); 10 if(a > 100) 11 ERROR(-1, " :a=%d 100
", a); 12 if(b > 100) 13 ERROR(-1, " :b=%d 100
", b); 14 return a + b; 15 } 16 int logging(int code, char *fmt,...){ 17 va_list list; 18 FILE *fp; 19 fp = fopen("./error.log","a+"); 20 if( fp == NULL){ 21 printf("error
"); 22 exit(0); 23 } 24 va_start(list, fmt); 25 vfprintf(fp,fmt,list); 26 fclose(fp); 27 va_end(list); 28 return code; 29 }

main.cファイル

  1 /*****main.c********/
  2 #include <stdio.h>
  3 int main(){
  4     int a, b, res;
  5     printf("          100,    -1
"); 6 while( scanf("%d %d", &a, &b) != EOF){ 7 res = add(a, b); 8 printf("%d
", res); 9 } 10 return 0; 11 }

Makefileファイル

 1 main : main.o fun.o
  2     cc -o main main.o fun.o
  3 main.o : main.c
  4     cc -c main.c
  5 fun.o : fun.c
  6     cc -c fun.c
  7 clean:
  8     rm main.o fun.o

a.hファイル

  1 #ifndef _A_DEF
  2 #define _A_DEF
  3 
  4 #include <stdio.h>
  5 #define ERROR return  logging
  6 int logging (int code, char *fmt,...);//  
  7 
  8 #endif