头文件、宏和内联函数c++

header files, macros and inline functions c++

本文关键字:函数 c++ 文件      更新时间:2023-10-16

我在做一个涉及c++头文件、宏和内联函数的练习时遇到了问题。以下要求。

  1. 创建一个名为"的头文件;最大h〃
  2. Max.h包括一个名为"的宏;mMax"mMax";最多返回2个整数
  3. Max.h包括一个名为"的内联函数;fMax"fMax";最多返回2个整数
  4. 在main.cpp中调用fMax和mMax

这是我的代码。它不起作用。请帮忙。

最大值

#ifdef MAX_H
#define MAX_H
#define mMax(x, y)((x > y) ? x : y;)
inline int fMax(int x, int y)
{
return (x > y) ? x : y;
}
#endif

main.cpp

#include <iostream>
#include "Max.h"
using namespace std;
int main()
{
cout << fMax(1, 2) << 'n';
cout << mMax(1, 2) << 'n';
return 0;
}

您的收割台防护是向后的。您写道:

#ifdef MAX_H
#define MAX_H
// Header body
#endif

这意味着只有在MAX_H已经定义的情况下,才会评估标头正文。

您实际需要的是测试MAX_H而不是定义的:

#ifndef MAX_H

总结:

  • CCD_ 3是";如果定义为">
  • CCD_ 4是";如果未定义">

评论中还指出,您的宏包含一个游离的分号。应该删除:

#define mMax(x, y) ((x > y) ? x : y)

因为宏可以代替xy的任何东西,所以将它们放在括号中也是相当标准的做法:

#define mMax(x, y) ((x) > (y) ? (x) : (y))