我只是想熟悉从Java迁移的C ++的基础知识。我刚刚编写了这个功能禁止程序,遇到了错误test.cpp:15: error: expected primary-expression before ‘<<’ token
,我不确定原因。
有人在解释为什么endl
不使用常量吗?代码如下。
//Includes to provide functionality.
#include <iostream>
//Uses the standard namespace.
using namespace std;
//Define constants.
#define STRING "C++ is working on this machine usig the GCC/G++ compiler";
//Main function.
int main()
{
string enteredString;
cout << STRING << endl;
cout << "Please enter a String:" << endl;
cin >> enteredString;
cout << "Your String was:" << endl;
cout << enteredString << endl;
return(0);
}
答案 0 :(得分:8)
你的#define
最后有一个分号。这成为宏的一部分,因此预处理代码如下所示:
cout << "C++ is working on this machine usig the GCC/G++ compiler"; << endl;
删除分号,你应该没问题。
PS:使用真实常量通常更好,而不是依赖于预处理器:
const char *STRING = "C++ is working on this machine usig the GCC/G++ compiler";
答案 1 :(得分:6)
预处理器定义中有;
。请注意,#DEFINE STRING x
只是将整个x语句(包括;
)复制到引用它的位置。
此外,预处理器常量不是语言常量。您应该使用const string STRING("C++ is working on this machine usig the GCC/G++ compiler");
答案 2 :(得分:2)
你#define
结尾处有一个句号结尾 - 这将被代入你的代码中。
cout << "C++ is working on this machine usig the GCC/G++ compiler"; << endl;
答案 3 :(得分:1)
因为你在STRING之后有一个半结肠。删除它并试一试......
答案 4 :(得分:1)
删除;
定义
STRINGS
答案 5 :(得分:1)
从
中删除;#define STRING "C++ is working on this machine usig the GCC/G++ compiler"
答案 6 :(得分:1)
删除;
末尾的#define STRING
,然后重试。
答案 7 :(得分:0)