简体   繁体   中英

All functions and structs raise “implicit declaration of <function>” errors/warnings when used in main.c

Errors that have been raised: ;

main.c:18:12: warning: implicit declaration of function ‘get_word’ [-Wimplicit-function-declaration]
     word = get_word( &sentence ); 

main.c:18:12: warning: implicit declaration of function ‘get_word’ [-Wimplicit-function-declaration]
     word = get_word( &sentence ); 

main.c:21:49: error: request for member ‘word’ in something not a structure or union
     printf("Word in word_count_struct = %s\n",CS->word)

My main.c :

#include "bow.h"


    int main(){
        struct word_count_struct *CS;
      char *sentence = "#The quick brown fox jumped over 23&%^24 the lazy dogs."; /* test sentence */
      char *word;  /* pointer to a word */

      printf( "sentence = \"%s\"\n", sentence );  /* show the sentence */

      while (*sentence)  /* while sentence doesn't point to the '\0' character at the end of the string */
      {
        word = get_word( &sentence );  /* this will allocate memory for a word */
        printf( "word = \"%s\"; sentence = \"%s\"\n", word, sentence );  /* print out to see what's happening */
        CS = new_word_count(word);
        printf("Word in word_count_struct = %s\n",CS->word);

        free(word);  /* free the memory that was allocated in get_word */
      }



    return 0;

my bow.h (bow.c contains all the :

#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <stdio.h>

#ifdef BOW_H
#define BOW_H


struct word_count_struct 
{
    char *word;
    int count;
};

struct bag_struct 
{
    struct word_count_struct *bag;
    int bag_size;
    int total_words;
};

/* More functions */

#endif

makefile:

bag: main.o bow.o bow.h
        gcc -Wall -ansi -pedantic main.o bow.o -o bag

bow.o: bow.c bow.h
        gcc -Wall -ansi -pedantic -c bow.c -o bow.o

main.o: main.c bow.h
        gcc -Wall -ansi -pedantic -c main.c -o main.o


clean:
        rm -i bag bow.o main.o

I have absolutely no idea what is causing these errors, any help would be appreciated.

You have #ifdef BOW_H which isn't defined so the header is basically blank. Change to #ifndef .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM