我无法理解为什么会这样:
#include <iostream>
using namespace std;
int main(){
signed long int count = 1;
//...
count++;
return 0;
}
然而,如果我将标识符声明(限制)移动到脚本的开头(就在使用命名空间之后),则无法编译错误“count unclared(首次在此函数中使用)” - 突出显示该行'计数++;'。
或者,Codepad会导致以下错误:
In function 'int main()':
Line 16: error: reference to 'count' is ambiguous
compilation terminated due to -Wfatal-errors.
谢谢,
威尔
答案 0 :(得分:9)
您的count
变量与std::count
之间可能存在冲突。
您不应该使用using namespace std
,因为这会将标准库中的所有内容放入全局命名空间,名称很快就会发生冲突。
使用using std::cin;
之类的特定行来代替。
答案 1 :(得分:2)
尝试使用:: limit,:: count或:: curNum
这表明它们是全球宣布的。虽然,您应该避免全局声明任何变量,而是通过引用传递。
答案 2 :(得分:0)
这编译并运行对我来说很好:
#include <iostream>
using namespace std;
signed long int limit;
signed long int count = 1;
signed long int curNum = 3;
// Declaration of checkprime() function
bool checkprime(signed long int x)
{
return true;
}
int main(){
cin >> limit;
do{
if(checkprime(curNum) == true){
count++;
}
curNum += 2;
} while(count < limit);
return 0;
}