ВНИМАНИЕ! На форуме начался конкурс - астрофотография месяца ОКТЯБРЬ!
0 Пользователей и 1 Гость просматривают эту тему.
//------------------------------------------------------------------------------//// GNU_iomanip.h//// Purpose: //// Temporaray implementation of ostream manipulators from the // C++ Standard Library, which are not contained in <iomanip> // as provided with GNU C++.//// Notes://// This software is protected by national and international copyright. // Any unauthorized use, reproduction or modificaton is unlawful and // will be prosecuted. Commercial and non-private application of the // software in any form is strictly prohibited unless otherwise granted// by the authors.// // (c) 1999 Oliver Montenbruck, Thomas Pfleger////------------------------------------------------------------------------------#include <iomanip>#include <iostream>namespace{ostream& left (ostream& os){os.setf(ios::left ,ios::adjustfield); return os;};ostream& right(ostream& os){os.setf(ios::right,ios::adjustfield); return os;};ostream& fixed(ostream& os){os.setf(ios::fixed,ios::floatfield); return os;};ostream& showpos (ostream& os){os.setf(ios::showpos); return os;};ostream& noshowpos(ostream& os){os.unsetf(ios::showpos); return os;};}
#ifdef __GNUC__ // GNU C++ adaptation#include <float.h>#else // Standard C++ version#include <limits>#endif
#ifdef __GNUC__ // GNU C++ adaptation const double eps_mach = DBL_EPSILON; #else // Standard C++ version const double eps_mach = numeric_limits<double>::epsilon(); #endif
gasha@almukantarat:~/Portable/APCe/Linux/apcesrc> g++ -c APC*APC_IO.cpp: In function ‘void GetFilenames(int, char**, char*, char*, bool&, char*, bool&)’:APC_IO.cpp:93:40: error: ‘memset’ was not declared in this scopeAPC_IO.cpp:100:52: error: ‘strncpy’ was not declared in this scopeAPC_IO.cpp:111:57: error: ‘strncpy’ was not declared in this scopeAPC_Kepler.cpp: In function ‘Mat3D GaussVec(double, double, double)’:APC_Kepler.cpp:466:20: error: ‘R_z’ was not declared in this scopeAPC_Kepler.cpp:466:30: error: ‘R_x’ was not declared in this scopeIn file included from APC_Math.cpp:28:0:GNU_iomanip.h:27:1: error: ‘ostream’ does not name a typeGNU_iomanip.h:28:1: error: ‘ostream’ does not name a typeGNU_iomanip.h:29:1: error: ‘ostream’ does not name a typeGNU_iomanip.h:30:1: error: ‘ostream’ does not name a typeGNU_iomanip.h:31:1: error: ‘ostream’ does not name a typeAPC_Math.cpp: In function ‘std::ostream& operator<<(std::ostream&, const Angle&)’:APC_Math.cpp:429:16: error: invalid conversion from ‘long int’ to ‘std::ios_base::fmtflags {aka std::_Ios_Fmtflags}’ [-fpermissive]In file included from /usr/include/c++/4.7/iomanip:42:0, from APC_Math.cpp:22:/usr/include/c++/4.7/bits/ios_base.h:580:5: error: initializing argument 1 of ‘std::ios_base::fmtflags std::ios_base::setf(std::ios_base::fmtflags)’ [-fpermissive]APC_Math.cpp: In member function ‘void SolverLSQ::Solve(double*)’:APC_Math.cpp:547:13: error: ‘exit’ was not declared in this scopeAPC_Moon.cpp: In function ‘void MiniMoon(double, double&, double&)’:APC_Moon.cpp:481:20: error: ‘R_x’ was not declared in this scopeAPC_Phys.cpp: In function ‘void Orient(PlanetType, SystemType, double, Mat3D&, RotationType&)’:APC_Phys.cpp:193:12: error: ‘R_z’ was not declared in this scopeAPC_Phys.cpp:193:30: error: ‘R_x’ was not declared in this scopeAPC_PrecNut.cpp: In function ‘Mat3D PrecMatrix_Ecl(double, double)’:APC_PrecNut.cpp:63:23: error: ‘R_z’ was not declared in this scopeAPC_PrecNut.cpp:63:33: error: ‘R_x’ was not declared in this scopeAPC_PrecNut.cpp: In function ‘Mat3D PrecMatrix_Equ(double, double)’:APC_PrecNut.cpp:101:16: error: ‘R_z’ was not declared in this scopeAPC_PrecNut.cpp:101:29: error: ‘R_y’ was not declared in this scopeAPC_PrecNut.cpp: In function ‘Mat3D NutMatrix(double)’:APC_PrecNut.cpp:139:24: error: ‘R_x’ was not declared in this scopeAPC_PrecNut.cpp:139:35: error: ‘R_z’ was not declared in this scopeAPC_Spheric.cpp: In function ‘Mat3D Equ2EclMatrix(double)’:APC_Spheric.cpp:45:17: error: ‘R_x’ was not declared in this scopeAPC_Spheric.cpp: In function ‘void Equ2Hor(double, double, double, double&, double&)’:APC_Spheric.cpp:94:25: error: ‘R_y’ was not declared in this scopeAPC_Spheric.cpp: In function ‘void Hor2Equ(double, double, double, double&, double&)’:APC_Spheric.cpp:130:28: error: ‘R_y’ was not declared in this scope APC_Sun.cpp: In function ‘void MiniSun(double, double&, double&)’: APC_Sun.cpp:336:19: error: ‘R_x’ was not declared in this scope In file included from APC_Time.cpp:29:0: GNU_iomanip.h:27:1: error: ‘ostream’ does not name a type GNU_iomanip.h:28:1: error: ‘ostream’ does not name a type GNU_iomanip.h:29:1: error: ‘ostream’ does not name a type GNU_iomanip.h:30:1: error: ‘ostream’ does not name a type GNU_iomanip.h:31:1: error: ‘ostream’ does not name a type In file included from APC_VecMat3D.cpp:28:0: GNU_iomanip.h:27:1: error: ‘ostream’ does not name a type GNU_iomanip.h:28:1: error: ‘ostream’ does not name a type GNU_iomanip.h:29:1: error: ‘ostream’ does not name a type GNU_iomanip.h:30:1: error: ‘ostream’ does not name a type GNU_iomanip.h:31:1: error: ‘ostream’ does not name a type
gasha@almukantarat:~/Portable/APCe/Linux/apcesrc> g++ --versiong++ (SUSE Linux) 4.7.2 20130108 [gcc-4_7-branch revision 195012]
Стандарт С++ - не нечто железобетонное, он имеет несколько редакций.Приложите пожалуйста полный файл, который пытаетесь компилировать, так будет проще.
Добрый день. Решил скомпилировать программы из исходников, которые прилагаются на CD к книге.
Там все еще веселее. Отлавливать баги там надо не только в библиотеках и в синтаксисе, но и в алгоритмах. Я как-то попробовал посчитать модифицированную юлианскую дату - результат был неожиданным. Пересчет экваториальных координат в горизонтальные нормально работает только если азимут попадает в диапазон 0-90 градусов.
gasha@almukantarat:~/Portable/APCe/Linux/apcesrc> g++ -c APC*APC_Math.cpp: In function ‘std::ostream& operator<<(std::ostream&, const Angle&)’:APC_Math.cpp:429:16: error: invalid conversion from ‘long int’ to ‘std::ios_base::fmtflags {aka std::_Ios_Fmtflags}’ [-fpermissive]In file included from /usr/include/c++/4.7/iomanip:42:0, from APC_Math.cpp:22:/usr/include/c++/4.7/bits/ios_base.h:580:5: error: initializing argument 1 of ‘std::ios_base::fmtflags std::ios_base::setf(std::ios_base::fmtflags)’ [-fpermissive]gasha@almukantarat:~/Portable/APCe/Linux/apcesrc>
#-------------------------------------------------------------------------------## makefile## Purpose:## Linux make file for C++ library and programs of# "O. Montenbruck, Th. Pfleger; Astronomy on the Personal Computer (4th ed.)"## Notes:## The original version of this makefile has kindly been contributed by# <Graham.Rule@ed.ac.uk>.# # To build the executable programs, copy all source and header files (*.cpp,# *.h) as well as this makefile into the working directory:# >tar -xvf /cdrom/APCe/Linux/apcesrc.tar# >cp /cdrom/APCe/Linux/makefile .# Then start the make tool:# >make# #-------------------------------------------------------------------------------# A list of the header files used by the library files and applications# (for information only):#HEADERS=APC_Cheb.h APC_Const.h APC_DE.h APC_IO.h APC_Kepler.h APC_Math.h\# APC_Moon.h APC_Phys.h APC_Planets.h APC_PrecNut.h APC_Spheric.h \# APC_Sun.h APC_Time.h APC_VecMat3D.h GNU_iomanip.h# The library isLIB=libAPC.a# and is made from the following object filesLIBOBJS=APC_Cheb.o APC_DE.o APC_IO.o APC_Kepler.o APC_Math.o APC_Moon.o \APC_Phys.o APC_Planets.o APC_PrecNut.o APC_Spheric.o \APC_Sun.o APC_Time.o APC_VecMat3D.o# created from the following C++ source files# (for information only)#LIBSRC= APC_Cheb.cpp APC_DE.cpp APC_IO.cpp APC_Kepler.cpp APC_Math.cpp \#APC_Moon.cpp APC_Phys.cpp APC_Planets.cpp APC_PrecNut.cpp \#APC_Spheric.cpp APC_Sun.cpp APC_Time.cpp APC_VecMat3D.cpp# The application files themselves areAPPLICS=AOEcat Coco Comet EclTimer Eclipse Foto Gauss Luna Numint \Occult PPMbin PPMcat Phases Phys Planpos Planrise Sunset# and are created from these source files# (for information only)#APPLICSRC=AOECat.cpp Coco.cpp Comet.cpp EclTimer.cpp Eclipse.cpp Foto.cpp \#Gauss.cpp Luna.cpp Numint.cpp Occult.cpp PPMbin.cpp PPMcat.cpp \#Phases.cpp Phys.cpp Planpos.cpp Planrise.cpp Sunset.cpp# Our main target is to make all the applications:all: $(APPLICS)# The library is made from the object files by using 'ar'libAPC.a: $(LIBOBJS) ar rc $(LIB) $(LIBOBJS)# Each of the application files, in addition to being dependant on its# own source file, needs the library$(APPLICS): $(LIB)# The next two are just to clean up files which we may not need to keep# Clean up all the object files that are now in the libraryclean: @rm -f $(LIBOBJS)# Clobber all the generated files, including the library and applicationsclobber: clean @rm -f $(LIB) $(APPLICS)
gasha@almukantarat:~/Portable/APCe/astro003> makeg++ -c -o APC_Cheb.o APC_Cheb.cppg++ -c -o APC_DE.o APC_DE.cppg++ -c -o APC_IO.o APC_IO.cppg++ -c -o APC_Kepler.o APC_Kepler.cppg++ -c -o APC_Math.o APC_Math.cppg++ -c -o APC_Moon.o APC_Moon.cppg++ -c -o APC_Phys.o APC_Phys.cppg++ -c -o APC_Planets.o APC_Planets.cppg++ -c -o APC_PrecNut.o APC_PrecNut.cppg++ -c -o APC_Spheric.o APC_Spheric.cppg++ -c -o APC_Sun.o APC_Sun.cppg++ -c -o APC_Time.o APC_Time.cppg++ -c -o APC_VecMat3D.o APC_VecMat3D.cppar rc libAPC.a APC_Cheb.o APC_DE.o APC_IO.o APC_Kepler.o APC_Math.o APC_Moon.o APC_Phys.o APC_Planets.o APC_PrecNut.o APC_Spheric.o APC_Sun.o APC_Time.o APC_VecMat3D.og++ AOEcat.cpp libAPC.a -o AOEcatg++ Coco.cpp libAPC.a -o Cocog++ Comet.cpp libAPC.a -o CometComet.cpp: In function ‘int main(int, char**)’:Comet.cpp:198:45: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]g++ EclTimer.cpp libAPC.a -o EclTimerg++ Eclipse.cpp libAPC.a -o Eclipseg++ Foto.cpp libAPC.a -o FotoFoto.cpp: In function ‘int main(int, char**)’:Foto.cpp:166:45: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]g++ Gauss.cpp libAPC.a -o GaussGauss.cpp: In function ‘int main(int, char**)’:Gauss.cpp:686:45: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]g++ Luna.cpp libAPC.a -o Lunag++ Numint.cpp libAPC.a -o NumintNumint.cpp: In function ‘int main(int, char**)’:Numint.cpp:342:45: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]g++ Occult.cpp libAPC.a -o OccultOccult.cpp: In function ‘int main(int, char**)’:Occult.cpp:761:45: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]g++ PPMbin.cpp libAPC.a -o PPMbing++ PPMcat.cpp libAPC.a -o PPMcatg++ Phases.cpp libAPC.a -o PhasesPhases.cpp: In function ‘char* SolarEclipseFlag(double)’:Phases.cpp:104:26: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]Phases.cpp:106:26: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] Phases.cpp:107:26: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] Phases.cpp:108:26: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] Phases.cpp:110:10: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] Phases.cpp: In function ‘char* LunarEclipseFlag(double)’: Phases.cpp:134:26: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] Phases.cpp:136:26: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] Phases.cpp:137:26: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] Phases.cpp:138:26: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] Phases.cpp:139:26: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] Phases.cpp:140:26: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] Phases.cpp:142:10: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] g++ Phys.cpp libAPC.a -o Phys g++ Planpos.cpp libAPC.a -o Planpos g++ Planrise.cpp libAPC.a -o Planrise g++ Sunset.cpp libAPC.a -o Sunset gasha@almukantarat:~/Portable/APCe/astro003>
Foto.cpp:166:45: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
:~/Portable/aaplus> gcc -lm AATest.cpp aaplus.a/tmp/cc0aeeyw.o:(.eh_frame+0x10b): undefined reference to `__gxx_personality_v0'aaplus.a(AADate.o):(.eh_frame+0x31f): undefined reference to `__gxx_personality_v0'aaplus.a(AADynamicalTime.o):(.eh_frame+0x13): undefined reference to `__gxx_personality_v0'aaplus.a(AAEclipses.o):(.eh_frame+0xab): undefined reference to `__gxx_personality_v0'aaplus.a(AAElliptical.o):(.eh_frame+0x14b): undefined reference to `__gxx_personality_v0'aaplus.a(AAEquationOfTime.o):(.eh_frame+0x6b): more undefined references to `__gxx_personality_v0' followcollect2: error: ld returned 1 exit status