Существуют два файла - a.c и b.c, а также главный - main.c, как сделать чтобы по умолчанию файл a.c не мог видеть функции объявленные в b.c (и при этом не объявленные в заголовочном файле). Самый простой вариант мне известен - добавлять static перед определением функции. Как сделать чтобы статическими были все функции по умолчанию?
Например:
// a.h
#ifndef A_H
#define A_H
void start_a();
#endif
// a.c
#include "a.h"
void start_a()
{
private_func_from_b(); // вот тут компилятор должен обругаться, а на деле ему пофиг
}
// b.h
#ifndef B_H
#define B_H
void start_b();
#endif
// b.c
#include "b.h"
void private_func_from_b()
{
// <...>
}
void start_b()
{
// <...>
}
// main.c:
#include "a.h"
#include "b.h"
int main(void)
{
// <...>
start_a();
start_b();
}