زبان برنامه نویسی سی/مقدمهای بر فایلهای سرآیند
تا به این جا چند بار به تابعهای کتابخانهای زبان سی اشاره نمودهایم . تابعها و ماکروهای کتابخانهای Library Functions and Macros در فایلهای سرآیند Header Files با پسوند h به زبان سطح پائین تعریف شدهاند تا امکان دریافت دادهها از ورودیهای کاربر دیگر یا سیستم یا سیستم عامل و یا فرستادن اطلاعات به خروجیهای سیستم یا سیستم عامل را فراهم کنند ؛ در کنار پردازشهای دیگر منطقی و محاسباتی که کار را برای برنامهنویس ، راحتتر می کنند و البته تکمیل قابلیتهای زبان سی . دقت کنید که فایلهای سرآیندی که خود می نویسید با فایلهای سرآیند استاندارد زبان سی متفاوت است و به نحوه دیگری توسط دستور مستقیم و پیشپردازنده include به فایل برنامه ، ضمیمه می شود ( رجوع کنید به مبحث پیش پردازندههای دیگر در همین کتاب )
این فایلهای سرآیند در کامپایلر در سطح پائین نوشته می شوند تا کاربر کامپایلر و برنامهنویس ؛ از طرفی بتواند با سیستم ارتباط برقرار کند و سطخ پائین برنامه بنویسد و از طرف دیگر برای سیستم عامل هدف کامپایلر ، برنامههای خود را بنویسید تا برنامه تحت کرنل و اجزاء کمکی ( Components ) اجرا شود که در واقع یا به دودویی و دیجیتال سیستم ترجمه می شود و یا به دودویی و کدبایتهای کرنل و سیستم عامل
توابع کتابخانهای همانند تابعهای زبان سی دارای جفت پرانتز باز و بسته هستند و هر کدام انواع خاص آرگومانهای خود را پذیرا می باشند و عمل از پیش تعریف شده خود را در فایل سرآیند انجام می دهند . اما ماکروهای کتابخانهای به همراه زیرخطها و یا بدون آنها به صورت یک اسم نوشته می شوند و قابلیت کاربرد ، توسط برنامهنویس به شکلی که در فایل سرآیند تعریف شدهاند را می دهند
ضمناً هر کامپایلر ممکن است کتابخانه اختصاصی خودش را نیز به کتابخانه استاندارد سی اضافه کند که قابلیتهای بیشتری به کامپایلر و از سویی دیگر برنامهنویس ارائه دهد که مهمترین آنها رابط کاربری گرافیکی می باشد که کامپایلرهای ویندوز فایل سرآیند windows.h را ارائه می دهند و سیستم عاملهای یونیکس و شبهیونیکس xwindow.h را و البته GCC فایل سرآیند gtk.h را که GNU برای تمام توزیعهای لینوکس نوشته است و همین طور سیستم عامل ویندوز و مک و سری BSD و دیگر سیستم عاملها ( علت محبوبیت Linux و GCC نزد برنامهنویسان نیز همین قابلیتها و قدرتهای بسیار بالای برنامهنویسی می باشد )