如何在cout中连接预处理器常量和文本字符串



我开始学习c++,当我试图定制一个宏时,它会在控制台中打印值,但当我试图用另一个字符串文本定制宏时,会引发一个错误。

#include <iostream>
using namespace std;
#define PI 3.14;
int main()
{
cout<<"Value of PI: " << PI;
cout<<"Value of PI: " << PI << endl;
}

主函数中的第一行运行良好,但第二行在编译时会引发错误。

错误:

错误:在'<lt;'代币cout<lt"PI的值:"<lt;PI<lt;endl;

我做错了什么?

问题是宏的末尾有一个分号。

这条线路

cout<<"Value of PI: " << PI << endl;

然后变为:

cout<<"Value of PI: " << 3.14; << endl;
//                           ^

因此,只需删除宏末尾的;

#define PI 3.14

您也可以使用适当的常量而不是宏(通常首选(:

inline constexpr double PI = 3.14;

或者使用在C++20:中添加的数学常数库部分

#include <numbers>
int main() {
std::cout<<"Value of PI: " << std::numbers::pi << 'n';
}

最新更新