-
字符串操作符:
#。在宏中的参数前使用可以在预处理时将参数转换为字符串。忽略参数前后的空格,参数中间的多个空格转换为一个空格。#include <iostream> #define print_variable_name(variable) std::cout <<"variable name: " << #variable << std::endl #define get_string(str) #str int main(void) { int num = 1; print_variable_name(num); // 输出: variable name: num std::cout << get_string( 123 ) << std::endl; // 输出: 123 std::cout << get_string( 1 2 3 ) << std::endl; // 输出: 1 2 3 } -
符号连接操作符:
##。如果##后面连接另一个宏名称,会阻止这个宏展开。#include <iostream> #define print_variable(index) std::cout << num_##index << std::endl int main(void) { int num_1 = 1, num_2 = 2, num_3 = 3; print_variable(1); // 输出: 1 print_variable(2); // 输出: 2 print_variable(3); // 输出: 3 } -
续行操作符:
\。\后面不可以有空格。#define inc_and_print_variable(variable) do { \ variable++; \ std::cout << variable << std::endl; \ } while(0)