“探索C book”编译器设置
作者:互联网
我刚拿到这本书“探索C”,我正在上第一堂课.我作为业余爱好已经做了几年C#所以我为什么不试试C.
在书中它说我需要设置我的编译器使用标准C.我正在使用visual studio 2010,所以我做到了. http://msdn.microsoft.com/en-us/library/ms235629.aspx
但是当我去编译代码时,一切正常,除了一个if语句.
我按照指示进行了三次检查,因此必须使用工具.
特别
if (not in) // this line here
{
std::perror(argv[1]);
return EXIT_FAILURE;
}
完整的样本
#include <algorithm>
#include <fstream>
#include <iostream>
#include <iterator>
#include <ostream>
#include <string>
#include <vector>
void read(std::istream& in, std::vector<std::string>& text)
{
std::string line;
while (std::getline(in, line))
text.push_back(line);
}
int main(int argc, char* argv[])
{
std::vector<std::string> text;
if (argc <2)
read(std::cin, text);
else
{
std::ifstream in(argv[1]);
if (not in)
{
std::perror(argv[1]);
return EXIT_FAILURE;
}
read(in,text);
}
std::sort(text.begin(), text.end());
std::copy(text.begin(), text.end(),
std::ostream_iterator<std::string>(std::cout, "\n"));
}
我真的很想继续阅读这本书,所以非常感谢任何帮助.
如果这对我来说非常无聊,我会道歉.
解决方法:
不是布尔运算符的“替代标记”!
也许您的编译器不支持它.
试试这个:
if (!in)
的确,here’s exactly the same issue on another site.
VC compiler doesn’t by default recognize alternative tokens (they are exceedingly rare nowadays), but I believe this support may be turned on with a compiler switch.
实际上,Visual Studio要求你#include< ciso646>获得对替代令牌的支持,即使C标准声明这应该没有效果1.顽皮的Visual Studio!
In any case, you might want to find a better, more modern textbook.
我推荐these resources.
1
[n3290: footnote 176]:
In particular, including the standard header<iso646.h>
or<ciso646>
has no effect.
标签:c,visual-studio,visual-studio-2010,standard-library 来源: https://codeday.me/bug/20190903/1794625.html