50 lines
1002 B
Markdown
50 lines
1002 B
Markdown
> **12.** Suppose that the macro `M` has been defined as follows:
|
|
```c
|
|
#define M 10
|
|
```
|
|
> Which of the following tests will fail?
|
|
```c
|
|
// C will fail, because `M` is defined.
|
|
#ifndef M
|
|
|
|
// E will fail, because `M` is defined
|
|
#if !defined(M)
|
|
```
|
|
|
|
---
|
|
|
|
> **13.** Show what the following program will look like after preprocessing. You may ignore any lines added to the program as a result of including the `<stdio.h>` header.
|
|
|
|
```c
|
|
#include <stdio.h>
|
|
|
|
int main(void)
|
|
{
|
|
f();
|
|
|
|
}
|
|
|
|
void f(void) {
|
|
printf("N is %d\n", 100);
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
> **15.** Suppose that a program needs to display messages in either English, French, or Spanish. Using conditional compilation, write a program fragment that displays one of the following three messages, depending on whether or not the specified macro is defined.
|
|
|
|
```c
|
|
#ifdef ENGLISH
|
|
#define MESSAGE "Insert Disk 1"
|
|
#endif
|
|
|
|
#ifdef FRENCH
|
|
#define MESSAGE "Inserez Le Disque 1"
|
|
#endif
|
|
|
|
#ifdef SPANISH
|
|
#define MESSAGE "Inserte El Disco 1"
|
|
#endif
|
|
|
|
printf(MESSAGE);
|
|
``` |