क्या कोई समझा सकता है कि शुरुआत से अंत तक एक सरल उदाहरण के साथ सी में हेडर फ़ाइल कैसे बनाई जाए।
क्या कोई समझा सकता है कि शुरुआत से अंत तक एक सरल उदाहरण के साथ सी में हेडर फ़ाइल कैसे बनाई जाए।
जवाबों:
foo.h
#ifndef FOO_H_ /* Include guard */
#define FOO_H_
int foo(int x); /* An example function declaration */
#endif // FOO_H_
foo.c
#include "foo.h" /* Include the header (not strictly necessary here) */
int foo(int x) /* Function definition */
{
return x + 5;
}
main.c
#include <stdio.h>
#include "foo.h" /* Include the header here, to obtain the function declaration */
int main(void)
{
int y = foo(3); /* Use the function here */
printf("%d\n", y);
return 0;
}
जीसीसी का उपयोग कर संकलन करने के लिए
gcc -o my_app main.c foo.c
#ifndef MY_HEADER_H
# define MY_HEADER_H
//put your function headers here
#endif
MY_HEADER_H
एक दोहरे समावेशी गार्ड के रूप में कार्य करता है।
फ़ंक्शन घोषणा के लिए, आपको केवल हस्ताक्षर को परिभाषित करने की आवश्यकता है, अर्थात्, पैरामीटर नाम के बिना, इस तरह से:
int foo(char*);
यदि आप वास्तव में चाहते हैं, तो आप पैरामीटर के पहचानकर्ता को भी शामिल कर सकते हैं, लेकिन यह आवश्यक नहीं है क्योंकि पहचानकर्ता का उपयोग केवल एक फ़ंक्शन के निकाय (कार्यान्वयन) में किया जाएगा, जो कि हेडर (पैरामीटर हस्ताक्षर) के मामले में, यह गायब है।
यह उस फ़ंक्शन को घोषित करता है foo
जो एक स्वीकार करता है char*
और एक रिटर्न देता है int
।
आपकी स्रोत फ़ाइल में, आपके पास होगा:
#include "my_header.h"
int foo(char* name) {
//do stuff
return 0;
}
extern
चर की घोषणाओं को इकट्ठा करना है और एक अलग फ़ाइल में फ़ंक्शन, जिसे ऐतिहासिक रूप से हेडर कहा जाता है , जो #include
प्रत्येक स्रोत फ़ाइल के सामने शामिल है । मानक पुस्तकालय के कार्यों, उदाहरण के लिए, हेडर में घोषित किए जाते हैं <stdio.h>
। "
myfile.h
#ifndef _myfile_h
#define _myfile_h
void function();
#endif
myfile.c
#include "myfile.h"
void function() {
}
void function();
एक घोषणा के रूप में कॉल की तरह नहीं रोकता है function(42);
। घोषणाvoid
में उपयोग करें जैसेvoid function(void);
शीर्ष लेख फ़ाइलों में आपके द्वारा .c या .cpp / .cxx फ़ाइल में परिभाषित फ़ंक्शंस के प्रोटोटाइप होते हैं (यदि आप c या ++ का उपयोग कर रहे हैं तो निर्भर करता है)। आप अपने .h कोड के चारों ओर # ifndef / # को परिभाषित करना चाहते हैं ताकि यदि आप एक ही .h को अपने कार्यक्रमों के विभिन्न भागों में दो बार शामिल करें, तो प्रोटोटाइप केवल एक बार ही शामिल हो।
client.h
#ifndef CLIENT_H
#define CLIENT_H
short socketConnect(char *host,unsigned short port,char *sendbuf,char *recievebuf, long rbufsize);
#endif /** CLIENT_H */
फिर आप .c फ़ाइल की तरह .h को कार्यान्वित करेंगे:
client.c
#include "client.h"
short socketConnect(char *host,unsigned short port,char *sendbuf,char *recievebuf, long rbufsize) {
short ret = -1;
//some implementation here
return ret;
}