H файл. Что такое расширение файла H? Лучшие редакторы H264





Майкл Барр

Когда я разговариваю с Си программистами об аппаратных интерфейсах или стандарте программирования, я часто вижу, что они не обладают необходимыми навыками и информацией об этом языке программирования. Как правило, это потому, что все мы в основном инженеры-электронщики, которые изучали Си (или какой-нибудь другой язык) самостоятельно.

Один из таких навыков относится к созданию заголовочных файлов. Что нужно (или не нужно) размещать в заголовочном Си файле.h? Когда нужно создавать заголовочный файл? И почему?

На перечисленные вопросы у меня есть свой список ответов.

Создавайте один заголовочный файл.h для каждого “модуля” системы. Модуль может содержать один или несколько компилируемых файлов (например, .с или.asm), но он должен реализовывать только один аспект системы. Примерами хорошо подобранных модулей являются: драйвер для АЦП; коммуникационный протокол, такой как FTP; менеджер аварий, который ведет журнал ошибок и предупреждает о них пользователя.

Включайте в заголовочный файл.h все прототипы функций, которые составляют внешний интерфейс модуля. Например, заголовочный файл adc.h мог бы содержать прототипы функций adc_init(), adc_select_input(), adc_read().

Не включайте в заголовочный файл функции и макросы, которые предназначены для использования внутри модуля. Желательно скрыть этих внутренних “помощников”, если они не используются в других модулях. (Если ваш модуль состоит из нескольких компилируемых файлов, которые используют эти внутренние функции, тогда создайте отдельный заголовочный файл для этих целей.) Модуль А должен вызывать модуль B только через открытый интерфейс, определенный в заголовочном файле moduleb.h

Не включайте в заголовочный файл исполняемый код, а также объявления переменных. Но обратите внимание, что для встраиваемых (inline) функций придется сделать исключение.

Не размещайте в заголовочном файле переменные, как это слишком часто делается с помощью ключевого слова extern. Правильная инкапсуляция модуля требует сокрытия всех внутренних данных внутри исходных Си файлов. По возможности внутренние переменные нужно объявлять с ключевым словом static, чтобы ограничить их область видимости пределами модуля.

Не раскрывайте внутренний формат специфических структур данных, используемых интерфейсными функциями модуля. Другими словами, в заголовочном файле не должно быть никаких struct{…}foo. Если у вас есть тип данных, который нужно передать в или из модуля, определите типы данных в заголовочном файле через typedef. Например, так “typedef struct foo moduleb_type”. Клиентские модули не должны знать внутренний формат структур.

Несмотря на то, что эти советы не являются специфичными для встраиваемого программного обеспечения, я надеюсь, что они окажутся для вас полезными.

Разработчики мультимедийных плееров стараются делать свои продукты универсальными с тем, чтобы они воспроизводили как можно больше форматов. К сожалению, даже самые лучшие и известные мультимедиа-проигрыватели не могут охватить весь спектр видеоформатов, нередко качественно отличающихся друг от друга даже при использовании одного расширения. Больше всего проблем возникает со специальными или проприетарными форматами, для воспроизведения которых требуются особое ПО или, по меньшей мере, особые кодеки.

Что за формат H264 и где используется

Примером таких «трудных» форматов может послужить H264, разработанный специалистами ITU Video Coding Experts Group и используемый для сохранения видео в файл с наружных камер наблюдения и автомобильных видеорегистраторов. Помимо записи видеопотока формат H264 применяется для передачи видео в мобильных сетях. Использование h264 в камерах наблюдения обуславливается, прежде всего, превосходной компрессией данных, при которой даже продолжительное видео получается компактным и достаточно качественным.

Так, сжатое с помощью кодека H.264 видео будет занимать на диске почти в два раза меньше места, чем MPEG-4 того же качества. Это позволяет экономить интернет-трафик и место на физическом носителе, но есть у формата и свои недостатки, в частности, он более требователен к ресурсам записывающего устройства, чем тот же DivX или XviD. Другой недостаток – проприетарность. Несмотря на то, что файлы имеют одно расширение H264, их алгоритм кодирования может отличаться в зависимости от того, каким устройством они были записаны.

Программы для просмотра файлов в формате H264

Возникает резонный вопрос – как открыть файл h264 и какие программы для этого нужны. Соответствующее программное обеспечение обычно поставляется вместе с записывающими устройствами, если же видео было найдено вами в интернете, попробовать открыть формат h264 можно с помощью сторонних плееров. Попробовать, потому что нельзя дать стопроцентной гарантии, что видео таки откроется.

Проигрыватель видеофайлов формата Н264 от разработчика Shenzhen VStarcam Technology. Плеер оснащен простейшим файловым менеджером, конвертером h264 в AVI, поддерживается перемотка видео, воспроизведение аудио, ускоренный просмотр, захват стоп-кадров и вывод на печать. Из недостатков текущей версии следует отметить некорректное отображение картинки с отличными от стандартных пропорциями, изображение при этом может быть растянуто по вертикали.

Один из самых популярных и мощных медиаплееров, умеющих воспроизводить большинство известных мультимедийных форматов, к которым относится и H264/AVC. Способен открыть файл h264 с камер наблюдения, но не всех моделей, а вот кодированное H264/AVC видео с расширением MP4 плеер открывает без проблем. VLC Player имеет встроенный конвертер, с помощью которого видео можно преобразовать в более распространенный формат. Если сходу открыть h264 в VLC не удается, рекомендуется установка декодеров ffdshow tryouts, AC3Filter и Haali Media Splitter.

Datakam Player

Чем еще просмотреть файл h264 с видеорегистратора? Поищите в интернете специальное приложение Datakam Player, он же Registrator Viewer. Является альтернативой плеерам, поставляемым вместе с автомобильными регистраторами, поддерживает воспроизведение видео, записанного с помощью DATAKAM, DOD, ProCam, CamBox, Papago, Digma, xDevice, AdvoCam и многих других устройств. Возможности плеера включают работу с картами, масштабирование видео и покадровый просмотр, поиск и группировку файлов.

Десктопные программы для конвертирования H264 в AVI

Если видео H264 нужно выложить в интернет для свободного доступа, его желательно сконвертировать в AVI или MP4, чтобы не создавать скачавшим его пользователям трудностей с просмотром. Для этого можно использовать следующие программы-конвертеры.

Бесплатный конвертер, предназначенный для преобразования разных форматов между собой. Программа заточена под конвертирование видео в форматы, поддерживаемые мобильными устройствами, но может использоваться и для преобразования H264. Относительно прост, удобен, позволяет настраивать битрейт, FPS и другие параметры видео, поддерживает распределенное кодирование с использованием серверов локальной сети. Для работы требует установки ffdshow tryouts, Haali Media Splitter, программы AVisynth и компонента Net Framework.

Мощный видеоконвертер со встроенными кодеками и широкой поддержкой мультимедийных форматов, включая H264. Отличается гибкостью настроек, позволяет изменять параметры преобразуемого видео, добавлять меню, субтитры и прочие элементы. В использовании программа проста – в поле «Исходный файл» перетаскиваем H264-видео, на вкладке «Форматы» выбираем предпочитаемый формат и жмем кнопку «Старт».

Онлайн-конвертеры H264 в AVI

Преобразовать записанное камерой наблюдения или видеорегистратором видео можно также с помощью онлайн-сервисов. Способ удобен тем, что не требует установки на компьютер сторонних программ и дополнительных кодеков.

Online-Convert.com

Популярный в Рунете онлайновый конвертер файлов. Нельзя сказать, чтобы он был заточен под работу только с видео, но формат H264 он поддерживает и это главное. Конвертирование может выполняться с настройками по умолчанию или с элементами редактирования. Сервис позволяет изменять размер видео, его битрейт, поддерживает удаление звуковой дорожки, обрезку, поворот по вертикали и горизонтали. Имеется также возможность выбора кодека. В качестве выходного формата можно выбрать AVI, MKV, MOV, MP4, 3GP, 3G2, FLV и MPEG.

Похожий по функционалу сервис, который также можно использовать как конвертер H264 в AVI онлайн. Поддерживает изменение размера, битрейта и FPS видео, кадрирование и реверс. Кроме AVI, загруженное видео можно преобразовать в GIF, WMV, OGG, MOV, MKV, MP4 и WEBM.

Filezigzag.com

И напоследок еще один неплохой онлайн-конвертер с поддержкой формата H264. Умеет преобразовывать в AVI, 3G2, 3GP, FLV, MKV, MOV, MP4, MPG, WEBM и WMV. От двух предыдущих сервис отличается меньшей функциональностью и несколько иной последовательностью действий. Преобразование выполняется в Filezigzag.com с настройками по умолчанию (их нельзя изменить), для получения результата нужно указать почтовый ящик, пусть и нерабочий. Обработанный файл сохраняется на локальный компьютер или в облачное хранилище.

При наличии на компьютере установленной антивирусной программы можносканировать все файлы на компьютере, а также каждый файл в отдельности . Можно выполнить сканирование любого файла, щелкнув правой кнопкой мыши на файл и выбрав соответствующую опцию для выполнения проверки файла на наличие вирусов.

Например, на данном рисунке выделен файл my-file.h , далее необходимо щелкнуть правой кнопкой мыши по этому файлу, и в меню файла выбрать опцию «сканировать с помощью AVG» . При выборе данного параметра откроется AVG Antivirus, который выполнит проверку данного файла на наличие вирусов.


Иногда ошибка может возникнуть в результате неверной установки программного обеспечения , что может быть связано с проблемой, возникшей в процессе установки. Это может помешать вашей операционной системе связать ваш файл H с правильным прикладным программным средством , оказывая влияние на так называемые «ассоциации расширений файлов» .

Иногда простая переустановка MacroMates TextMate может решить вашу проблему, правильно связав H с MacroMates TextMate. В других случаях проблемы с файловыми ассоциациями могут возникнуть в результате плохого программирования программного обеспечения разработчиком, и вам может потребоваться связаться с разработчиком для получения дополнительной помощи.


Совет: Попробуйте обновить MacroMates TextMate до последней версии, чтобы убедиться, что установлены последние исправления и обновления.


Это может показаться слишком очевидным, но зачастую непосредственно сам файл H может являться причиной проблемы . Если вы получили файл через вложение электронной почты или загрузили его с веб-сайта, и процесс загрузки был прерван (например, отключение питания или по другой причине), файл может повредиться . Если возможно, попробуйте получить новую копию файла H и попытайтесь открыть его снова.


Осторожно: Поврежденный файл может повлечь за собой возникновение сопутствующего ущерба предыдущей или уже существующей вредоносной программы на вашем ПК, поэтому очень важно, чтобы на вашем компьютере постоянно работал обновленный антивирус.


Если ваш файл H связан с аппаратным обеспечением на вашем компьютере , чтобы открыть файл вам может потребоваться обновить драйверы устройств , связанных с этим оборудованием.

Эта проблема обычно связана с типами мультимедийных файлов , которые зависят от успешного открытия аппаратного обеспечения внутри компьютера, например, звуковой карты или видеокарты . Например, если вы пытаетесь открыть аудиофайл, но не можете его открыть, вам может потребоваться обновить драйверы звуковой карты .


Совет: Если при попытке открыть файл H вы получаете сообщение об ошибке, связанной с.SYS file , проблема, вероятно, может быть связана с поврежденными или устаревшими драйверами устройств , которые необходимо обновить. Данный процесс можно облегчить посредством использования программного обеспечения для обновления драйверов, такого как DriverDoc .


Если шаги не решили проблему , и у вас все еще возникают проблемы с открытием файлов H, это может быть связано с отсутствием доступных системных ресурсов . Для некоторых версий файлов H могут потребоваться значительный объем ресурсов (например, память/ОЗУ, вычислительная мощность) для надлежащего открытия на вашем компьютере. Такая проблема встречается достаточно часто, если вы используете достаточно старое компьютерное аппаратное обеспечение и одновременно гораздо более новую операционную систему.

Такая проблема может возникнуть, когда компьютеру трудно справиться с заданием, так как операционная система (и другие службы, работающие в фоновом режиме) могут потреблять слишком много ресурсов для открытия файла H . Попробуйте закрыть все приложения на вашем ПК, прежде чем открывать C/C++/Objective-C Header File. Освободив все доступные ресурсы на вашем компьютере вы обеспечите налучшие условия для попытки открыть файл H.


Если вы выполнили все описанные выше шаги , а ваш файл H по-прежнему не открывается, может потребоваться выполнить обновление оборудования . В большинстве случаев, даже при использовании старых версий оборудования, вычислительная мощность может по-прежнему быть более чем достаточной для большинства пользовательских приложений (если вы не выполняете много ресурсоемкой работы процессора, такой как 3D-рендеринг, финансовое/научное моделирование или интенсивная мультимедийная работа). Таким образом, вполне вероятно, что вашему компьютеру не хватает необходимого объема памяти (чаще называемой «ОЗУ», или оперативной памятью) для выполнения задачи открытия файла.

В языке Си исходные файлы бывают двух типов:

    заголовочные, или h-файлы;

    файлы реализации, или Cи-файлы.

Имена заголовочных файлов имеют расширение ".h". Имена файлов реализации имеют расширения ".c" и ".cpp".

Заголовочные файлы содержат только описания. Прежде всего, это прототипы функций. Прототип функции описывает имя функции, тип возвращаемого значения, число и типы ее аргументов. Сам текст функции в h-файле не содержится. Также в h-файлах описываются имена и типы внешних переменных, константы, новые типы, структуры и т.п. В общем, h-файлы содержат лишь интерфейсы , т.е. информацию, необходимую для использования программ, уже написанных другими программистами (или тем же программистом раньше). Заголовочные файлы лишь сообщают информацию о других программах. При трансляции заголовочных файлов, как правило, никакие объекты не создаются. Например, в заголовочном файле нельзя определить глобальную переменную. Строка описания

определяющая целочисленную переменную x, является ошибкой. Вместо этого следует использовать описание

означающее, что переменная x определена где-то в файле реализации (в каком - неизвестно). Слово extern (внешняя) лишь сообщает информацию о внешней переменной, но не определяет эту переменную.

    assert.h assert макрокоманду, которую Вы можете использовать, чтобы создать условия в ваших программах.

    ctype.h файл для включения содержит определения и прототипы для подпрограмм которые

классифицируют символы ASCII и подпрограммы, которые исполняют символьные преобразования:

setjmp, longjmp, isalnum, isalpha, iscntrl, isprint, ispunct, isspace, toint, tolower, _tolower

    float.h

определенные выполнением свойства чисел с плавающей запятой:

isdigit, isgraph, islower, isupper, isxdigit, toascii, toupper, _toupper

    limits.h файл для включения определяет явные константы, которые представляют

определенные пределы на значениях, сохраненных в различных типах данных.

    math.h файл для включения содержит прототипы и определения для всех подпрограмм для

исполнения математических вычислений с плавающей запятой.

    setjmp.h файл для включения определяет тип jmp_buf и моделирует setjmp

и longjmp подпрограммы.

    stdarg.h файл для включения определяет макросы, которые обращаются к параметрам в функциях

со списками параметров переменной длины.

    stddef.h файл для включения определяет offsetof макрокоманду, к которой Вы можете использовать

смещение членов структуры.

    stdio.h файл для включения содержит прототипы и определения для потокового ввода - вывода

подпрограммы. stdlib.h файл для включения содержит прототипы и определения для подпрограмм распределения памяти.

    string.h файл для включения содержит прототипы для следующей строки и буфера

подпрограммы манипуляции.

Файлы реализации , или Cи-файлы, содержат тексты функций и определения глобальных переменных. Говоря упрощенно, Си-файлы содержат сами программы, а h-файлы - лишь информацию о программах.

Представление исходных текстов в виде заголовочных файлов и файлов реализации необходимо для создания больших проектов, имеющих модульную структуру. Заголовочные файлы служат для передачи информации между модулями. Файлы реализации - это отдельные модули, которые разрабатываются и транслируются независимо друг от друга и объединяются при создании выполняемой программы.

Файлы реализации могут подключать описания, содержащиеся в заголовочных файлах. Сами заголовочные файлы также могут использовать другие заголовочные файлы. Заголовочный файл подключается с помощью директивы препроцессора #include. Например, описания стандартых функций ввода-вывода включаются с помощью строки

#include

(stdio - от слов standard input/output). Имя h-файла записывается в угловых скобках, если этот h-файл является частью стандартной Си-библиотеки и расположен в одном из системных каталогов. Имена h-файлов, созданных самим программистом в рамках разрабатываемого проекта и расположенных в текущем каталоге, указываются в двойных кавычках, например,

#include "abcd.h"

Примеры с. файлов:

    calloc.c Распределяет память для массива элементов.

    free.c Выпускает память, распределенную сcalloc, malloc, илиrealloc.

    getkey.c Ждет символа, который будет получен от последовательного порта.

    init_mem.c Инициализирует пул памяти, используемый calloc, malloc, и подпрограммамиrealloc.

    malloc.c Распределяет блок памяти от памяти пула.

    putchar.c Передает символ, используя последовательный порт.

    realloc.c Изменяет размер предварительно распределенного блока памяти

CARM Компилятор генерирует множество файлов в течение трансляции. Каждый файл использует то же имя исходного файла . Однако, каждый имеет различное расширение.

    LST Файлы содержат отформатированный исходный текст наряду с любыми ошибками, обнаруженными компилятором. Листинг файлов может произвольно содержать символы используемые и сгенерированные ассемблерным кодом.

    OBJ Файлы - объектные модули, которые содержат перемещаемый объектный код. Объектные модули могут быть связаны с абсолютным объектным модулем.

    SRC Файлы - сгенерированные исходные файлы трансляции вашего исходного текста.