如何在 cout 中连接预处理器常量和文字字符串
How to concatenate the preprocessor constant and a literal string in cout
我开始学习 C++,当我尝试计算宏时,它会在控制台中打印值,但是当我尝试使用另一个字符串文字来计算宏时,它会引发错误。
#include <iostream>
using namespace std;
#define PI 3.14;
int main()
{
cout<<"Value of PI: " << PI;
cout<<"Value of PI: " << PI << endl;
}
main函数中第一行完美运行,但第二行在编译时出现错误。
错误:
error: expected primary-expression before '<<' token
cout<<"Value of PI: " <<PI<<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 中添加的 mathematical constants 库部分:
#include <numbers>
int main() {
std::cout<<"Value of PI: " << std::numbers::pi << '\n';
}
我开始学习 C++,当我尝试计算宏时,它会在控制台中打印值,但是当我尝试使用另一个字符串文字来计算宏时,它会引发错误。
#include <iostream>
using namespace std;
#define PI 3.14;
int main()
{
cout<<"Value of PI: " << PI;
cout<<"Value of PI: " << PI << endl;
}
main函数中第一行完美运行,但第二行在编译时出现错误。
错误:
error: expected primary-expression before '<<' token cout<<"Value of PI: " <<PI<<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 中添加的 mathematical constants 库部分:
#include <numbers>
int main() {
std::cout<<"Value of PI: " << std::numbers::pi << '\n';
}