1⟩ 1. Which of the following are C preprocessors? a) #ifdef b) #define c) #endif d) All of the mentioned
d
(All of the mentioned)
“C Preprocessor frequently Asked Questions in various C preprocessor job Interviews by interviewer. The set of questions here ensures that you offer a perfect answer posed to you. So get preparation for your new job hunting”
d
(All of the mentioned)
When a certain variable is declared with the keyword ‘auto’ and initialized to a certain value, then within the scope of the variable, it is reinitialized upon being called repeatedly.
Static variables in C have the scopes;
1. Static global variables declared at the top level of the C source file have the scope that they can not be visible external to the source file. The scope is limited to that file.
2. Static local variables declared within a function or a block, also known as local static variables, have the scope that, they are visible only within the block or function like local variables. The values assigned by the functions into static local variables during the first call of the function will persist / present / available until the function is invoked again.
The static variables are available to the program, not only for the function / block. It has the scope within the current compile. When static variable is declared in a function, the value of the variable is preserved , so that successive calls to that function can use the latest updated value. The static variables are initialized at compile time and kept in the executable file itself. The life time extends across the complete run of the program.
Static local variables have local scope. The difference is, storage duration. The values put into the local static variables, will still be present, when the function is invoked next time.
Packing of data in a structured format is allowed by using bit fields. When the memory is a premium, bit fields are extremely useful. For example:
- Picking multiple objects into a machine word : 1 bit flags can be compacted
- Reading external file formats : non-standard file formats could be read in, like 9 bit integers
This type of operations is supported in C language. This is achieved by putting :’bit length’ after the variable. Example:
struct packed_struct {
unsigned int var1:1;
unsigned int var2:1;
unsigned int var3:1;
unsigned int var4:1;
unsigned int var5:4;
unsigned int funny_int:9;
} pack;
packed-struct has 6 members: four of 1 bit flags each, and 1 4 bit type and 1 9 bit funny_int.
C packs the bit fields in the structure automatically, as compactly as possible, which provides the maximum length of the field is less than or equal to the integer word length the computer system.
The following points need to be noted while working with bit fields:
The conversion of bit fields is always integer type for computation
Normal types and bit fields could be mixed / combined
Unsigned definitions are important.
The bitwise operators are used for shifting the bits of the first operand left or right. The number of shifts is specified by the second operator.
Expression << or >> number of shifts
Ex:
number<<3;/* number is an operand - shifts 3 bits towards left*/
number>>2; /* number is an operand – shifts 2 bits towards right*/
The variable number must be an integer value.
For leftward shifts, the right bits those are vacated are set to 0. For rightward shifts, the left bits those are vacated are filled with 0’s based on the type of the first operand after conversion.
If the value of ‘number’ is 5, the first statement in the above example results 40 and stored in the variable ‘number’.
If the value of ‘number’ is 5, the second statement in the above example results 0 (zero) and stored in the variable ‘number’.
► Programs easier to develop,
► Easier to read,
► Easier to modify
► C code more transportable between different machine architectures.
The C preprocessor is a tool which filters your source code before it is compiled. The preprocessor allows constants to be named using the #define notation.It is particularly useful for selecting machine dependent pieces of code for different computer types, allowing a single program to be compiled and run on several different computers.
The preprocessor is called cpp, however it is called automatically by the compiler so you will not need to call it while programming in C.
a
(The file is searched for in the standard compiler include paths)
Explanation:With the #include, if the filename is enclosed within angle brackets, the file is searched for in the standard compiler include paths.
d
(All of the mentioned)
Explanation:The preprocessor provides the ability for the inclusion of header files, macro expansions, conditional compilation, and line control.
c
(both a & b)
Explantion:The #include directive tells the preprocessor to grab the text of a file and place it directly into the current file and are statements are typically placed at the top of a program.
a
(#)
Explanation:The C-preprocessors are specified with # symbol.
c
(Running a function at exitting the program)
Explanation:It is primarily used for running a function upon exitting the program.
b
(Before any scanf/printf)
Explanation:Using these directives before main() improves readability.
This a dynamic macro which stores the line number of the line presently being compiled. Value is constantly updated as compiler moves forward.
This macro stores the file name of the source file being compiled
#line preprocessor is used to change the values of 2 MACROS , _ _LINE _ _ and _ _ FILE _ _.
► Macro substitution division
► File inclusion division
► Compiler control division
The #pragma Directives are used to turn ON or OFF certain features. They vary from compiler to compiler.
The use of this preprocessor is in debugging. Whenever this preprocessor is encountered during compilation the compiler would stop compilation and display the error message associated with the preprocessor in complation Output/Result Window. Depending upon compiler any other debugging information will also accompany your error message.
General form of #error is -
#error message
Also note that message doesnot need to be in double quotes.
Following source code display the use of #error preprocessor directive in C -
#include
int main ()
{
#error I am Error and while i am here i will not let this program compile :-) .
return 0;
}