Functions that are used only in the current source file should be declared as static, and the function's declaration should appear in the current source file along with the definition of the function. Functions used outside of the current source file should have their declarations put in a header file, which can be included in whatever source file is going to use that function. For instance, if a function named stat_func() is used only in the source file stat.c, it should be declared as shown here:/* stat.c */#include <stdio.h>static int stat_func(int, int); /* static declaration of stat_func() */void main(void);void main(void){ ... rc = stat_func(1, 2); ...}/* definition (body) of stat_func() */static int stat_func(int arg1, int arg2){ ... return rc;}In this example, the function named stat_func() is never used outside of the source file stat.c. There is therefore no reason for the prototype (or declaration) of the function to be visible outside of the stat.c source file. Thus, to avoid any confusion with other functions that might have the same name, the declaration of stat_func() should be put in the same source file as the declaration of stat_func().In the following example, the function glob_func() is declared and used in the source file global.c and is used in the source file extern.c. Because glob_func() is used outside of the source file in which it's declared, the declaration of glob_func() should be put in a header file (in this example, named proto.h) to be included in both the global.c and the extern.c source files. This is how it's done:/* proto.h */int glob_func(int, int); /* declaration of the glob_func() function *//* global.c */#include <stdio.h>#include "proto.h" /* include this proto.h file for the declaration of glob_func() */void main(void);void main(void){ ... rc = glob_func(1, 2); ...}/* definition (body) of the glob_func() function */int glob_func(int arg1, int arg2){ ... return rc;}/* extern.c */#include <stdio.h>#include "proto.h" /* include this proto.h file for the declaration of glob_func() */void ext_func(void);void ext_func(void){ ... /* call glob_func(), which is defined in the global.c source file */ rc = glob_func(10, 20); ...}In the preceding example, the declaration of glob_func() is put in the header file named proto.h because glob_func() is used in both the global.c and the extern.c source files. Now, whenever glob_func() is going to be used, you simply need to include the proto.h header file, and you will automatically have the function's declaration. This will help your compiler when it is checking parameters and return values from global functions you are using in your programs. Notice that your function declarations should always appear before the first function declaration in your source file.In general, if you think your function might be of some use outside of the current source file, you should put its declaration in a header file so that other modules can access it. Otherwise, if you are sure your function will never be used outside of the current source file, you should declare the function as static and include the declaration only in the current source file.
C
Topic: Functions
When should I declare a function?
Browse random answers:
Is it possible to execute code even after the program exits the main() function?
What is a static function?
How to print a statement without using printf() in c?
What is the purpose of main() function?
Explain the problem with overriding functions.?
Describe static and dynamic binding of functions.
How do you write a function that can reverse a linked-list?
On including a file twice I get errors reporting redefinition of function. How can I avoid duplicate inclusion?
Should a function contain a return statement if it does not return a value?
How to use function strdup( ) in a program?
What is Pass by Value?
How would you use the functions randomize() and random()?
What information does function prototype carry? Can you give an example?
Explain function prototype?
What is the purpose of "extern" keyword in a function declaration?
Explain the use of fflush() function?
Explain the difference between malloc() and calloc() function?
Explain the difference between strcpy() and memcpy() function?
Explain the difference between exit() and _exit() function?
Out of fgets( ) and gets( ) which function is safer to use and why?
How can send unlimited no of arguments to a function, eg printf function can take any no of arguments?
What is the difference between the functions rand(),random(),srand() and randomize()?
Can you use the function fprintf()to display the output on the screen?
What is recursion? Write a program using recursion (factorial)?
How do you determine whether to use a stream function or a low-level function?
Write your own C program to implement the atoi() function?
How do you use a pointer to a function?
Advantages of a macro over a function ?
Is it better to use a macro or a function?
What is a method?
What is the code for clrscr() function?
Is it better to use a macro or a function ?
What do the functions atoi(),itoa()and gctv()do?
How to write a C program to find the power of 2 in a normal way and in single step?
The keyword used to transfer control from a function back to the calling function is?
What is the difference between printf() and sprintf() ?
How would you use the functions memcpy(),memset(),memmove()?
How to write a program in c to print its own code?
How would you use the functions sin(),pow(),sqrt()?
Is using exit() the same as using return?
How to use the cprintf,cscanf,sscanf,sprintf,vsscanf,vsprintf,vscanf & vprintf?
When should I declare a function?
Why should I use standard library functions instead of writing my own?
What header files do I need in order to define the standard library functions I use?
What is a function?
What are built in functions?
gets() function There is a hidden problem with the following code. Can you detect it?#include<stdio.h>int main(void){ char buff[10]; memset(buff,0,sizeof(buff)); gets(buff); printf("\n The buffer entered is [%s]\n",buff); return 0;}
strcpy() functionFollowing is the code for very basic password protection. Can you break it without knowing the password?#include<stdio.h>int main(int argc, char *argv[]){ int flag = 0; char passwd[10]; memset(passwd,0,sizeof(passwd)); strcpy(passwd, argv[1]); if(0 == strcmp("LinuxGeek", passwd)) { flag = 1; } if(flag) { printf("\n Password cracked \n"); } else { printf("\n Incorrect passwd \n"); } return 0;}
What will happen if some illegal request is made to this function?
Write a function to concatenate two strings without using strcat function.
What are the advantages of the functions?
What is the output of printf("%d")?printf() Function
Difference between Funtion to pointer and pointer to function?
What is the function of c?
Is function declarations are used only for compilation and not get stored in the .EXE File ?
The Spawnl( ) function...
How do I write code to get the current drive as well as set the current drive?
The access( ) function..?
Out of the functions fgets() and gets(), which one is safer to use and why?
The functions memcmp( ) and memicmp( )