Боб Мартин в этом видео говорит, что "C имеет идеальную инкапсуляцию".Я не понимаю, почему он так говорит ... Я понимаю, что мы можем отделить реализацию в файле .c и объявить интерфейс в файле заголовка .h, но ничто не мешает мне получить доступ к деталям реализации, подобным этому:
main.c
#include <stdio.h>
#include "file1.h"
extern int x;
int main() {
printf("%d\n", x);
return 0;
}
file1.c
int x = 5;
int getnum_file1() {
return x + 1;
}
file1.h
int getnum_file1();
В этом случае main.c имеетдоступ к деталям реализации в file1.c.Этот код также компилируется и выполняется с ожидаемым результатом.Как это идеальная инкапсуляция ??