A predefined macro is a special identifier that the C compiler automatically defines before compilation. It provides useful information like the current file name, line number, or compilation date.
Click to reveal answer
beginner
What does the predefined macro __FILE__ represent?
The __FILE__ macro expands to the name of the current source file as a string literal.
Click to reveal answer
beginner
What value does the predefined macro __LINE__ hold?
The __LINE__ macro expands to the current line number in the source file as an integer constant.
Click to reveal answer
intermediate
What information does the predefined macro __DATE__ provide?
The __DATE__ macro expands to a string literal representing the date when the source file was compiled, in the format "Mmm dd yyyy".
Click to reveal answer
intermediate
How can predefined macros help in debugging C programs?
Predefined macros like __FILE__ and __LINE__ can be used to print the current file name and line number, helping programmers quickly find where an error or message originated.
Click to reveal answer
Which predefined macro gives the current line number in a C source file?
A__TIME__
B__FILE__
C__DATE__
D__LINE__
✗ Incorrect
The macro __LINE__ expands to the current line number in the source file.
What does the predefined macro __FILE__ return?
AThe current line number
BThe name of the current source file
CThe compilation date
DThe compilation time
✗ Incorrect
The macro __FILE__ expands to the name of the current source file as a string.
Which predefined macro provides the date when the program was compiled?
A__DATE__
B__TIME__
C__FILE__
D__LINE__
✗ Incorrect
The macro __DATE__ expands to the compilation date as a string.
How can predefined macros be useful in debugging?
AThey can print the current file and line number
BThey can optimize code speed
CThey can change program logic
DThey can store variable values
✗ Incorrect
Predefined macros like __FILE__ and __LINE__ help identify where in the code an error or message occurs.
Which of these is NOT a standard predefined macro in C?
A__TIME__
B__DATE__
C__COMPILER__
D__FILE__
✗ Incorrect
__COMPILER__ is not a standard predefined macro in C.
Explain what predefined macros are in C and list at least three common examples with their purpose.
Think about what information the compiler automatically provides during compilation.
You got /4 concepts.
Describe how you can use predefined macros to help find bugs in your C program.
Consider how knowing the exact file and line number can speed up fixing problems.
You got /3 concepts.
Practice
(1/5)
1. Which of the following predefined macros in C gives the current line number in the source code?
easy
A. __LINE__
B. __FILE__
C. __DATE__
D. __TIME__
Solution
Step 1: Understand predefined macros purpose
Predefined macros provide info about the code or environment automatically.
Step 2: Identify macro for line number
__LINE__ gives the current line number in the source file.
Final Answer:
__LINE__ -> Option A
Quick Check:
Line number macro = __LINE__ [OK]
Hint: Line number macro always has LINE in its name [OK]
Common Mistakes:
Confusing __FILE__ with line number
Using __DATE__ or __TIME__ for line info
Thinking __LINE__ is a function
2. Which of the following is the correct syntax to print the current file name using a predefined macro in C?
easy
A. printf("File: %s", FILE);
B. printf("File: %s", __FILE__);
C. printf("File: %s", _FILE_);
D. printf("File: %s", file);
Solution
Step 1: Recall predefined macro for file name
The macro __FILE__ holds the current source file name as a string.
Step 2: Check correct syntax usage
Using printf("File: %s", __FILE__); correctly prints the file name.
Final Answer:
printf("File: %s", __FILE__); -> Option B
Quick Check:
File name macro syntax = __FILE__ [OK]
Hint: Predefined macros always have double underscores before and after [OK]
Common Mistakes:
Omitting underscores in __FILE__
Using FILE without underscores
Using lowercase file instead of macro
3. What will be the output of the following C code snippet?
A. LINE is not a predefined macro; it should be __LINE__
B. Missing semicolon after printf
C. printf format specifier %d is incorrect for LINE
D. No problem; code runs fine
Solution
Step 1: Identify the macro usage error
The code uses LINE instead of the correct predefined macro __LINE__.
Step 2: Understand consequences
Since LINE is undefined, this causes a compilation error.
Final Answer:
LINE is not a predefined macro; it should be __LINE__ -> Option A
Quick Check:
Predefined macros need double underscores [OK]
Hint: Predefined macros always have double underscores before and after [OK]
Common Mistakes:
Using LINE without underscores
Thinking %d is wrong for line number
Ignoring missing macro error
5. You want to log the current file name, line number, and compilation date in your C program for debugging. Which code snippet correctly uses predefined macros to do this?
hard
A. printf("File: %s, Line: %d, Date: %s\n", _FILE_, _LINE_, _DATE_);
B. printf("File: %s, Line: %d, Date: %s\n", FILE, LINE, DATE);
C. printf("File: %s, Line: %d, Date: %s\n", "__FILE__", "__LINE__", "__DATE__");
D. printf("File: %s, Line: %d, Date: %s\n", __FILE__, __LINE__, __DATE__);
Solution
Step 1: Identify correct predefined macros
The macros __FILE__, __LINE__, and __DATE__ provide file name, line number, and compile date respectively.
Step 2: Check correct usage in printf
Using them directly without quotes and with correct underscores prints the desired info.