0

我希望这不是编程问答论坛的话题,但是我在编译这个程序时遇到了麻烦,这对我来说非常重要。

http://www.inf.ethz.ch/personal/fukudak/cdd_home/ 从那里最新的cdd+-077a.tar.gz ...

一个简单的make all(就像 README 建议的那样)产生:

g++ -O3 -I -I/usr/local/include -I. -DGMP -DRATIONAL -c -o cdd_r.o cdd.C
In file included from ./Rational.h:19:0,
             from cddtype.h:16,
             from cdd.C:38:
./Integer.h:779:28: Fehler: »INT_MAX« wurde in diesem Gültigkeitsbereich nicht definiert
./Integer.h:780:30: Fehler: »INT_MAX« wurde in diesem Gültigkeitsbereich nicht definiert
In file included from cddtype.h:16:0,
             from cdd.C:38:
./Rational.h: In Funktion »std::basic_ostream<char, _Traits>&      operator<<(std::basic_ostream<char, _Traits>&, const Rational&)«:
./Rational.h:1181:35: Fehler: es gibt keine Argumente für »strlen«, die von einem  Templateparameter abhängen, weshalb eine Deklaration von »strlen« verfügbar sein muss [- fpermissive]
./Rational.h:1181:35: Anmerkung: (mit »-fpermissive« wird G++ den Code akzeptieren, aber die Verwendung eines nicht deklarierten Namens ist veraltet)
cdd.C: In Funktion »void DDEnumerate(std::ostream&, std::ostream&)«:
cdd.C:197:49: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:204:55: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:211:49: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:219:55: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C: In Funktion »void DDRowDecomposition(std::ostream&, std::ostream&)«:
cdd.C:260:53: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:301:47: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:308:53: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:315:47: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C: In Funktion »void PreProjection(std::ostream&, std::ostream&)«:
cdd.C:356:69: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:422:49: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:429:55: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:436:49: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C: In Funktion »void PostAnalysisMain(std::ifstream&, std::ostream&)«:
cdd.C:522:49: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:529:55: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:536:49: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:544:55: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C: In Funktion »int main(int, char**)«:
cdd.C:794:39: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:797:56: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:806:45: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
make: *** [cdd_r.o] Fehler 1

这意味着什么?文件本身是否损坏(我非常怀疑)是我的设置错误(我正在运行 Ubuntu 13.04)还是我不知道其他任何事情?

如果有人能指出我正确的方向,我将不胜感激...

4

1 回答 1

1

我已经解决了这个问题如下:

首先:在 Integer.h 的开头添加以下内容:

#define __STDC_LIMIT_MACROS
#include <stdint.h>` 

第二:

替换INT_MAXINT32_MAX(这是在第 779 和 780 行),因为在 stdint.h (usr/include) 中,只需INT32_MAX使用 no定义INT_MAX

上面的改变可能只是解决了第一个问题,大约是INT_MAX.

在此之后,您将遇到 and 的问题strlenmemcopy然后您可以通过将“string.h”添加到相关文件中来解决这个问题,可能是 Rational.h 和其他文件,我忘记了。

于 2013-10-31T08:59:49.447 回答