- Microsoft Visual C++ Windows Applications by Example
- Stefan Bjornander
- 393字
- 2021-07-02 12:02:21
The Preprocessor
The preprocessor is a tool that precedes the compiler in interpreting the code. The #include
directive is one of its parts. It opens the file and includes its text. So far, we have only included system header files, whose names are surrounded by arrow brackets (<
and >
). Later on, we will include our own header files. Then we will use parentheses instead of arrow brackets. The difference is that the preprocessor looks for the system header files in a special system file directory while it looks for our header files in the local file directory.
Another part of the preprocessor is the macros. There are two kinds: with or without parameters. A macro without parameters works like a constant.
#define ARRAY_SIZE 256 int arr[ARRAY_SIZE];
The predefined macros __DATE__, __TIME__, __FILE__ , and __LINE__ holds today's date, the current time, the current line number, and the name of the file, respectively.
Macros with parameters act like functions with the difference being that they do not perform any type checking, they just replace the text. A macro is introduced with the #define
directive and is often written with capitals.
#define ADD(a, b) ((a) + (b)) cout << ADD(1 + 2, 3 * 4) << endl; // 15
One useful macro is assert
, it is defined in the header file cassert
. It takes a logical parameter and exits the program execution with an appropriate message if the parameter is false. exit
is a standard function that aborts the execution of the program and returns an integer value to the operating system. When a macro definition stretches over several lines, each line except the last one must end witha backslash.
#define assert(test) \ { \ if (!(test)) \ { \ cout << "Assertion: \"" << #test << "\" on line " \ << __LINE__ << " in file " << __FILE__ << "."; \ ::exit(-1); \ } \ }
In the error handling section of the next chapter, we will define an error checking macro displaying the error message in a message box.
It is also possible to perform conditional programming by checking the value of macros. In the following example, we define a system integer according to the underlying operating system.
#ifdef WINDOWS #define SYSINT int #endif #ifdef LINUX #define SYSINT unsigned int #endif #ifdef MACHINTOCH #define SYSINT long int #endif SYSINT iOpData = 0;
- Creo Parametric 8.0中文版基礎(chǔ)入門一本通
- VR、AR與MR項(xiàng)目開發(fā)實(shí)戰(zhàn)
- Sphinx Search Beginner's Guide
- Photoshop CS6平面設(shè)計(jì)應(yīng)用教程(第4版)
- 像攝影師一樣調(diào)色
- AI圖像處理:Photoshop+Firefly后期處理技術(shù)基礎(chǔ)與實(shí)戰(zhàn)
- 中文版CorelDRAW基礎(chǔ)培訓(xùn)教程
- Illustrator CC 2018中文版入門與提高
- PHP應(yīng)用開發(fā)與實(shí)踐
- 攝影輕松入門:Photoshop后期處理
- Photoshop CC 2017從入門到精通
- 輕松玩轉(zhuǎn)3D One AI
- 學(xué)摳圖:Photoshop專業(yè)摳圖技法案例教程
- 跨境電商:速賣通搜索排名規(guī)則解析與SEO技術(shù)
- Vulkan實(shí)戰(zhàn)