为什么我不能在使用小天鹅的同时使用环礁

Why can't I use atoll while using cygwin

本文关键字:小天鹅 为什么 不能      更新时间:2023-10-16

我正在使用cygwin并尝试使用以下命令编译文件。

$g++ -std=c++0x test.cpp -o test

但是cygwin告诉我这个环礁没有定义。然后我谷歌了一下,发现这是cygwin的问题。

有些网站说我可以设置一些东西来禁用-ansi-std=c98效果,但我不明白如何做到这一点。

谁能给我解释一下我该怎么做才能解决这个问题?

我会放一个我找到的网站(其他都是用中文写的):
禁用-ansi -std=c89对系统包含文件的影响

但我不明白他的解决方案在说什么><</p> <标题>梦想目标:

我想知道是否有一种方法可以摆脱这个问题,并且不需要每次都不定义东西。如果我不能再处理那个问题,那就太好了。

感谢所有愿意花时间研究这个奇怪问题的人^^

头文件有问题。一个补丁可能不是特别困难,但是一个(可能)更简单的解决方案是在编译行上取消定义__STRICT_ANSI__

g++ -std=c++0x -U__STRICT_ANSI__ test.cpp -o test

这适用于@R Sahu的-std=c++0x-std=c++11的测试代码。

事实上,我想我错了。我认为Cygwin是对的。atoll不是__STRICT_ANSI__。所以,如果你想使用它,上面的方法是最好的。

我用以下代码进行了测试:

#include <stdlib.h>
#include <iostream>
int main(int argc, char** argv)
{
   std::cout << atoll(argv[1]) << std::endl;
}

什么对我有用:

g++  test-130.cc   -o test-130

什么不适合我:

g++  -std=c++0x test-130.cc   -o test-130
g++  -std=c++11 test-130.cc   -o test-130