C++ 中的宏函数,也可以叫做带参数的 宏, C++ 的宏函数跟 普通函数 类似,只不错是宏函数的参数没有类型。
定义 C++ 宏函数,实现求最大值和最小值
#include <iostream>
using namespace std;
#define MAX(x, y) (((x) > (y)) ? (x) : (y))
#define MIN(x, y) (((x) < (y)) ? (x) : (y))
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
int x = 10;
int y = 30;
int max = MAX(x, y);
int min = MIN(x, y);
cout << "Max = " << max << " Min = " << min << endl;
return 0;
}
程序运行后,控制台输出如下图所示:
我们首先定义了一个宏函数 MAX,该宏函数接受两个参数,返回这两个参数的最大值,接着,我们再次定义了一个宏函数,该函数接受两个参数, 返回两个参数的最小值。
最后,我们分别调用了这两个宏函数,求出了两个数中的最大值和最小值。
定义 C++ 宏函数,实现转换字符的大小写
#include <iostream>
using namespace std;
#define UPCASE(c) (((c) >= 'a' && (c) <= 'z') ? ((c) + 'A' - 'a') : (c))
#define LOCASE(c) (((c) >= 'A' && (c) <= 'Z') ? ((c) + 'a' - 'A') : (c))
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
char ch1 = 'a';
char ch2 = 'B';
char upCh1 = UPCASE(ch1);
char loCh2 = LOCASE(ch2);
cout << "ch1 = " << ch1 << " ch2 = " << ch2 << endl;
cout << "upCh1 = " << upCh1 << " loCh2 = " << loCh2 << endl;
return 0;
}
程序运行后,控制台输出如下图所示:
我们首先定义了一个宏函数 UPCASE,该宏函数接受一个参数,返回这个参数的大写形式,接着,我们再次定义了一个宏函数,该函数接受一个参数, 返回这个参数的小写字符形式。
最后,我们分别调用了这两个宏函数,求出了两个字符的大写形式和小写形式。
定义 C++ 宏函数,实现判断字符是否是十进制数字
#include <iostream>
using namespace std;
#define ISDIGIT(c) ((c) >= '0' && (c) <= '9')
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
char ch1 = 'a';
char ch2 = '8';
int isDigit1 = ISDIGIT(ch1);
int isDigit2 = ISDIGIT(ch2);
cout << "isDigit1 = " << isDigit1 << " isDigit2 = " << isDigit2 << endl;
return 0;
}
程序运行后,控制台输出如下图所示:
我们定义了一个 ISDIGIT 宏函数,该宏函数接受一个参数,判断该参数是否是数字字符。
定义 C++ 宏函数,实现返回数组的元素个数
#include <iostream>
using namespace std;
#define ARR_SIZE(arr) (sizeof((arr)) / sizeof((arr[0])))
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
char arr1[10];
int arr2[20];
int arrSize1 = ARR_SIZE(arr1);
int arrSize2 = ARR_SIZE(arr2);
cout << "arrSize1 = " << arrSize1 << " arrSize2 = " << arrSize2 << endl;
return 0;
}
程序运行后,控制台输出如下图所示:
我们定义了一个 ARR_SIZE 宏函数,该宏函数接受一个参数,实现了计算 数组 的长度。
C++ 中的宏函数,也可以叫做带参数的宏, C++ 的宏函数跟普通函数类似,只不错是宏函数的参数没有类型。