我在Mac上学习了C++,并且最近转移到了Windows 7上。我下载了windows v7.1 sdk并运行了安装程序。它的.net 4依赖版本的sdk,并且我安装了.net 4。编译器说逻辑,并且是未定义的标识符
我正在使用命令行,因为我更喜欢使用它,我使用gcc编译器在Mac上做了这个,因为我对编程非常陌生,所以我非常善于使用它。
我一直在使用v7.1 sdk开发人员命令提示符,因为它使用SetEnv批处理文件设置环境变量。
编译器显然是来自Microsoft的cl.exe编译器。
我运行了典型的非常简单的hello world程序,其中包括一个getchar()结束让我真正看到程序,因为mac不需要这个新东西。而且getchar工作得很好,程序编译并运行良好。
当我尝试编译我在Mac上编写的一些源代码时,出现问题。顺便说一句,在Mac上编译好了。它开始抛出一些非常奇怪的错误,比如告诉我逻辑'和'操作符是一个未定义的标识符。现在我可能在这里是一个愚蠢的人,但从我的理解来看,和运算符不是一个标识符,它是一个运算符。
因此,我决定通过编写一个非常简单的程序来缩小问题范围,该程序使用一个if语句和一个else语句以及'and'运算符,并查看会发生什么。下面是我试图编译代码:
//hello, this is a test
#include <iostream>
int main()
{
char end;
int a = 0, b = 0;
std::cout << "If the variable a is larger than 10 and variable b is less than a, then b will be subtracted from a, else they are added.\n";
std::cout << "Enter a number for variable a\n";
std::cin >> a;
std::cout << "Now enter a number for variable b\n";
std::cin >> b;
if (a>10 and b<a) a - b;
else a+b;
std::cout << "The value of a is: " <<a;
std::cout << "Press any key to exit";
end = getchar();
return 0;
}
这是我用来编译程序
cl /EHsc main.cpp
而最后的命令,但肯定不是最不重要的,错误的,这一名单程序提出,为什么这些错误在这里我不知道。这对我来说没有任何意义。
的main.cpp
error C2146: syntax error : missing ')' before identifier 'and'
error C2065: 'and' : undeclared identifier
error C2146: syntax error : missing ';' before identifier 'b'
error C2059: syntax error : ')'
error C2146: syntax error : missing ';' before identifier 'a'
warning C4552: '<' : operator has no effect; expected operator with side-effect
warning C4552: '-' : operator has no effect; expected operator with side-effect
error C2181: illegal else without matching if
warning C4552: '+' : operator has no effect; expected operator with side-effect
这些错误使每个人很奇怪。我以前从未遇到过,而且之前我从来没有问过任何问题,因为我一直能够不问问题就能找到我的答案,但在这一方面我真的很难过。
'a + b'和'a-b'加减两个变量,但不会对结果做任何事情。它们是没有任何副作用的语句,例如将结果存储在变量中或传递给函数调用,所以它们不会影响程序流。事实上,你的编译器可能会将它们完全从程序中删除,因为它们的存在或缺失根本不会影响程序。 – Frxstrem
不要采取这种错误的方式,但你真的不需要这么长的解释来解释你的问题。信息的信噪比并不是那么好。 – StoryTeller
你意识到这一点,是&C在C + +?如果在Mac上编译的代码,他们真的有线编译器那里... – anhoppe