freeCodeCamp/guide/english/c/macros/index.md

61 lines
1.6 KiB
Markdown
Raw Normal View History

2018-10-12 19:37:13 +00:00
---
title: Macros in C
---
## Macros in C
2018-11-14 15:23:04 +00:00
A macro is a piece of code with a given name. When the name is used, it is replaced by the content of the macro. The `#define` keyword is used to define new macros. It's followed by a name and a content. By convention, macro names are written in uppercase. There are two type of macros: `Object-like` macros and `Function-like` macros.
2018-10-12 19:37:13 +00:00
2018-11-14 15:23:04 +00:00
#### Object-like Macros
2018-10-12 19:37:13 +00:00
```C
#define PI 3.14
```
If you use the macro this way:
```C
printf("Value of PI: %d", PI);
```
Is the same as write this:
```C
printf("Value of PI: %d", 3.14);
```
#### Undefining Macros
After defining macros you can also undefine them at any point.
just Type
```C
#undefine PI
```
This is used to use macros only for specific lines of code and again undefine it.
2018-10-12 19:37:13 +00:00
#### Function-like Macros
2018-11-14 15:23:04 +00:00
Function-like uses the same `#define` keyword. The difference is that you use a pair of parentheses after the function name.
2018-10-12 19:37:13 +00:00
```C
#define hello_world() printf("Hello World!")
```
So calling:
```C
hello_world()
```
You get:
```C
printf("Hello World!");
```
You can set parameters too:
```C
#define hello(X) printf("Hello " X "!")
```
Now calling:
```C
hello("World");
```
2018-11-14 15:23:04 +00:00
You get the equivalent of:
2018-10-12 19:37:13 +00:00
```C
printf("Hello World!");
```
#### More Information:
<!-- Please add any articles you think might be helpful to read before writing the article -->
[GCC Online Documentation: Macros](https://gcc.gnu.org/onlinedocs/cpp/Macros.html)
[GCC Online Documentation: Object-like macros](https://gcc.gnu.org/onlinedocs/cpp/Object-like-Macros.html#Object-like-Macros)
[GCC Online Documentation: Function-like macros](https://gcc.gnu.org/onlinedocs/cpp/Function-like-Macros.html#Function-like-Macros)