其他分享
首页 > 其他分享> > “探索C book”编译器设置

“探索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