Необходимо рассматривать.h файлы как [1 111] интерфейсные файлы из.c файла. Каждый.c файл представляет модуль с определенным количеством функциональности. Если функции в.c файле используются другими модулями (т.е. другие.c файлы) помещает прототипа функции в файл интерфейса.h. Включением интерфейсного файла в Ваших исходных модулях.c файл и любой.c файл Вам нужна функция в, Вы делаете эту функцию доступной для других модулей.
, Если Вам только нужна функция в определенном.c файле (не в каком-либо другом модуле), объявите его статичный объем. Это означает, что это можно только назвать из c файла, в котором это определяется.
То же идет для переменных, которые используются через несколько модулей. Они должны войти в заголовочный файл, и там у них есть к отмеченному с ключевым словом 'экстерн'.Примечание: Для функций ключевое слово 'экстерн' является дополнительным. Функции всегда считают 'экстерном'.
защита включения в заголовочных файлах помогает не включать тот же заголовочный файл многократно.
, Например:
Module1.c:
#include "Module1.h" static void MyLocalFunction(void); static unsigned int MyLocalVariable; unsigned int MyExternVariable; void MyExternFunction(void) { MyLocalVariable = 1u; /* Do something */ MyLocalFunction(); } static void MyLocalFunction(void) { /* Do something */ MyExternVariable = 2u; }
Module1.h:
#ifndef __MODULE1.H #define __MODULE1.H extern unsigned int MyExternVariable; void MyExternFunction(void); #endif
Module2.c
#include "Module.1.h" static void MyLocalFunction(void); static void MyLocalFunction(void) { MyExternVariable = 1u; MyExternFunction(); }
Не очень уверен, но некоторые ссылки, которые могут помочь:
http://sillydog.org/forum/ sdt_15762.php : форум пользователя, на котором отображаются строки агента пользователя. Есть член группы поддержки Bing (bingnate), у которого это есть в строках пользовательского агента. Вы могли бы спросить его.
http://user-agent-string.info Анализатор пользовательских агентов.