1

Why does main.c fail to compile when including sum_divisibles.h?

I am sure I am missing something silly, but can't find it for the life of me.

Compiling on Mac OSX.

sum_divisibles.h

 #ifndef SUM_DIVISIBLES                                                                                                                                                           
 #define SUM_DIVISIBLES

 int sum_divisibles(int limit);

 #endif /* SUM_DIVISIBLES */

sum_divisibles.c

#include <stdlib.h>
#include "sum_divisibles.h"

int sum_divisibles(int limit)
/* Returns sum of multiples of 3 and 5 less than limit.  */
{
    int mult_3, mult_5, sum = 0;
    for (int ndx=0; (mult_3 = ndx * 3 ) < limit; ndx++) {
       if ( (mult_5 = ndx * 5) < limit && mult_5 % 3 != 0 ) {
           sum += mult_5 ;
       }
    }                                                                                                                      

return sum;                                                                                                                                                                   }

main.c

#include <stdio.h>
#include "sum_divisibles.h"     // does not compile
//#include "sum_divisibles.c"   // compiles                                                                                                                                           

int main(void)                                                                                                                                                                        
{
    printf("%d\n", sum_divisibles(1000));
}

Error -- on gcc -Wall main.c

Undefined symbols for architecture x86_64:
  "_sum_divisibles", referenced from:
      _main in main-e4e97
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
tlskr
  • 71
  • 4

0 Answers0