У меня есть этот код, который работает, но я не думаю, что делаю это правильно.У меня есть 3 файла, main.c
, init.c
и init.h
.
init.h
. Файл выглядит следующим образом (для простоты я пропустил директивы препроцессора в этом примере):
void init(int param);
int firstCFG(int param);
int secondCFG(int param);
int thirdCFG(int param);
int fourthCFG(int param);
int fifthCFG(int param);
и файл init.c
выглядит следующим образом:
#include "init.h"
void init(int param){
int cfg1 = firstCFG(1);
int cfg2 = secondCFG(2);
int cfg3 = thirdCFG(3);
int cfg4 = fourtCFG(4);
int cfg5 = fifthCFG(5);
}
int firstCFG(int param){
//do stuff
return stuff;
}
int secondCFG(int param){
//do stuff
return stuff;
}
int thirdCFG(int param){
//do stuff
return stuff;
}
int fourthCFG(int param){
//do stuff
return stuff;
}
int fifthCFG(int param){
//do stuff
return stuff;
}
, и из моего файла main.c
я называю это так:
#include "init.h"
int main(int argc, char** argv) {
init(0);
//do stuff....
}
Так что в основном я вызываю только одну функциюв init.c
- init();
и другие функции в этом файле вызываются из самого файла.Но поскольку я включил init.h
в основной файл, я могу вызывать все функции CFG из основного, но я не хочу этого делать.Я хочу, чтобы файл main.c
видел только функцию init()
и функции CFG для приватности init.c
.Итак, мой вопрос: как правильно это сделать?
Первоначально я хотел сделать функции CFG static
и не делать #include "init.h"
в main.c
, поэтому только init()
ехЬегп.Это тоже сработало, но компилятор дал мне предупреждение warning: implicit declaration of function ‘init’