2016-09-13 1 views
0

У меня есть следующий пример кода фрагмент кода из main.c, который вызывает 3 функции, с 3 заголовками - что дает мне предупреждения по неизвестным причинам:предупреждение: неявное объявление функции - порядок включения вопроса?

#include "header1.h" 
 
#include "header2.h" 
 
#include "header3.h" 
 

 
int main() 
 
{ 
 
    function1(); // this is from header1 
 
    function2(); // this is from header2 
 
    function3(); // this is from header 3 
 
}

В основном, после использования gcc функции 2 & 3 выдадут предупреждение. Тем не менее, после перегруппировки кода что-то вроде этого:

#include "header3.h" 
 
#include "header1.h" 
 
#include "header2.h" 
 
    
 

 
int main() 
 
{ 
 
    function1(); // this is from header1 
 
    function2(); // this is from header2 
 
    function3(); // this is from header 3 
 
}

Затем он дал мне предупреждение, что функции 1 & 2 неявные. Что я здесь делаю неправильно?

+1

Пожалуйста обеспечивает [mcve]. Нам нужно увидеть точное содержимое файлов заголовков. Вероятно, у вас есть ошибка в одном/каждом из них (с использованием того же include guard - это моя догадка). – kaylum

+1

Такие ошибки возникают, если заголовок неправильно включает зависимые заголовки или использует неясные макросы/условную компиляцию. См. [Ask], укажите [mcve]. – Olaf

+0

@kaylum здесь один из заголовочных файлов, остальные последуют этому примеру '#ifndef __REZON_FUNCTIONS__ #define __REZON_FUNCTIONS__ недействительным function1(); #endif ' – rezon

ответ

1

ваш включаемый файл 1 должен выглядеть следующим образом:

#ifndef __REZON_FUNCTIONS1__ 
#define __REZON_FUNCTIONS1__ 

#endif 

Остальные два файл должен быть аналогичен с макроименем изменился соответственно

Смежные вопросы