Форум программистов, компьютерный форум CyberForum.ru

Пишем свой интерпретатор языка BASIC - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Меню и список http://www.cyberforum.ru/cpp-beginners/thread41194.html
Здравствуйте форумчане. Помоги пожалуйста в следующем вопросе: У меня есть 2связный список, написано меню. Но в моменте когда написано make a list и delete custom необходимо чтобы выводились: Введите элемент и номер. вот сам код: #ifndef __list_h #define __list_h #include <iostream>
C++ Здравствуйте! Не могу поместить class в один файл с программой. file.hpp #include "Cat.hpp" // здесь классы "2)" Cat::Cat(int initialAge) { itsAge = initialAge; } Cat::~Cat() { http://www.cyberforum.ru/cpp-beginners/thread41186.html
Массивы строк C++
Привет всем! Задан массив строк. Как узнать который символ встечаетса найбольшое количество раз в етом массиве?
C++ вывод на экран набор треугольников и квадратов, которые произвольно двигаются и меняют размер
Please, help me!!! Вот текст программы, которая выводит на экран набор треугольников и квадратов, которые произвольно двигаются и меняют размер только квадратов. Проблема в том, что необходимо исправить код, чтоб фигуры не исчезали за экран (т.е. 640х460) и были компактным набором, т.е. двигались неменяя своего положения относительно друг друга и стукаясь об стенку экрана меняли свое...
C++ Округление дробного числа до целого в большую сторону. http://www.cyberforum.ru/cpp-beginners/thread41139.html
Доброго дня. Я новичок в программирование на Visual C++. Проблема такая программа должна считать кол-во месяцев, если числа целые то программа шла дальше, если дробное то (например 3.33333) программа не округляет это число (в большую сторону) до 4. Перелопатил тонны литературы, но пропустил или не нашёл этого, большая просьба написать функцию которая могла бы это делать, или способ какой.
C++ Код из Delphi в C++ Нужно написать курсовую на C++. Сам я в программировании плохо шарю (не программист). Попросил у народу помощи, помогли. Но решение на Delphi: {$APPTYPE CONSOLE} type byteset=set of byte; var d:array of longint; procedure c; var a,b,i:longint; подробнее

Показать сообщение отдельно
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
21.03.2010, 22:25  [ТС]     Пишем свой интерпретатор языка BASIC
Забавно,буду собирать )
У меня сразу возник вопрос: можно ли максимально упростить структуру файлов?
Я имею в виду то,что мой интерпретатор собирается вместе с GUI по одной команде make (надо только доделать отмену сборки,если есть #define WITHOUT_GUI или подобное)
Мой Makefile выглядит так:
Makefile
Код
#
#
# basin makefile
#
#


# Принятые обозначения: CC - компилятор Си, CXX - компилятор Си++
CXX = g++
CXXFLAGS = -ansi -pedantic -pedantic-errors -Wall -O2 -Os
DFLAGS = -MD
LD = $(CXX)
LDFLAGS = -lSDL
OFILES = Interpreter/debug/error_handler.o \
         Interpreter/main.o \
         Interpreter/lib/lib.o \
         Interpreter/cmd/options.o \
         Interpreter/memory/memory.o \
         \
         Interpreter/frontend/parser.o  \
         Interpreter/frontend/syntax.o \
         \
         Interpreter/intermediate/value.o \
         Interpreter/intermediate/variable.o \
         Interpreter/intermediate/expression.o \
         Interpreter/intermediate/statement.o \
         Interpreter/intermediate/array.o \
         Interpreter/intermediate/label.o \
         \
         Interpreter/runtime/interp.o \
         Interpreter/runtime/function.o \
         Interpreter/runtime/graphics/graphics.o \
         Interpreter/runtime/tracer/tracer.o \
         Interpreter/runtime/pool.o
         
CXXFLAGS += -I. -IInterpreter/runtime -IInterpreter/runtime/graphics  \
-IInterpreter/runtime/tracer -IInterpreter/cmd -IInterpreter/config   \
-IInterpreter/debug -IInterpreter/frontend -IInterpreter/intermediate \
-IInterpreter/lib -IInterpreter/include -IInterpreter/memory          \
-IInterpreter

RM         = rm -f
TARGET     = basin
SUBTARGET  = Basin-IDE
INSTALLDIR = ./compiled
MV         = /bin/mv
LS         = /bin/ls
CURRDIR    = `pwd`
OPT        = *.h *.cpp */*.h */*.cpp
LSFLAGS    = -R $(OPT)
PROGDIR    = ./Interpreter
GUIDIR     = ./GUI/Qt/Basin-IDE
MAKE       = /usr/bin/make
QMAKE      = /usr/bin/qmake
QMKFLAGS   = -project

#`ls -R 'pwd'| sed -r /*.h/*.cpp/`

# По умолчанию прика "make" собирает самую первую цель.
# Обычно её обзывают "all" и уже расписывают, что там должно быть
all: $(TARGET)  $(GUIDIR)/$(SUBTARGET) 

# Линковка из объектников
$(TARGET): $(OFILES)
	$(LD) $(LDFLAGS) $(OFILES) -o $(TARGET) \
	&& $(MV) ./$(TARGET) $(INSTALLDIR)/$(TARGET)
	
$(GUIDIR)/$(SUBTARGET):
	 cd $(GUIDIR) && $(QMAKE) $(QMKFLAGS) $($(LS) $(LSFLAGS)) \
	 && $(QMAKE) && $(MAKE) && cd .. && cd .. && cd .. \
	 && $(MV) $(GUIDIR)/$(SUBTARGET) $(INSTALLDIR)/$(SUBTARGET)

# Подключаем файлы зависимостей
# Заумное выражение справа означает взять переменную OFILES и заменить ".o"
# на ".d"  Т.е. здесь по сути написано "-include debugger.d error_handler.d ..."
# Директива include работает точно так же, как и препроцессорная #include
-include $(OFILES:.o=.d)

# Общее правило формирования объектника. $< означает левую часть зависимости,
# $@ - правую
%.o : %.cpp
	$(CXX) -c $(DFLAGS) $(CXXFLAGS) $< -o $@

clean:
	$(RM) $(GUIDIR)/Makefile */*.pro *.o *.d *.bak *~*  *.log *.status \
   */*.o */*.d */*.bak *.dat */moc_* */qrc_* */qrc_* */*.dat    \
	*/*/*/*.o */*/*/*.d */*/*/*.bak */*/*/moc_* */*/*/qrc_* */*/*/*.dat \
	*/*/*/*.log */*/*/*.pro */*/*.o */*/*.d
distclean:
	$(RM) $(INSTALLDIR)/$(TARGET) \
	$(INSTALLDIR)/$(SUBTARGET)   \
	$(GUIDIR)/Makefile */*.pro *.o *.d *.bak *~*  *.log *.status \
   */*.o */*.d */*.bak *.dat */moc_* */qrc_* */qrc_* */*.dat    \
	*/*/*/*.o */*/*/*.d */*/*/*.bak */*/*/moc_* */*/*/qrc_* */*/*/*.dat \
	*/*/*/*.log */*/*/*.pro */*/*.o */*/*.d

а configure.in так
configure.in
Код
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.61])
AC_INIT([basin], [0.46], [pragma.develop(собачка)gmail.com], [],\
                                       [http://sourceforge.net/projects/basin/])

AC_CONFIG_HEADERS([Interpreter/config/config.h:Interpreter/config/config.h.in])

################################################################################
#
#                      COMMAND LINE ARGUMENTS CHECKS
#
################################################################################

########################### SDL library ############################

AC_ARG_ENABLE(sdl-graphics,
AS_HELP_STRING([--disable-sdl-graphics],[Disable SDL library
 (default: enabled)]),enable_sdl="$enableval",enable_sdl="yes")

AS_IF([(test "${enable_sdl}" != "yes")],
      [AC_DEFINE([DISABLE_SDL_GRAPHICS], [], [Disabling SDL library])])

AC_MSG_NOTICE([Checking for --disable-sdl-graphics option])

# SDL protection from crashes (drawing pixels outside the screen)
AC_ARG_ENABLE(sdl-protection,
AS_HELP_STRING([--disable-sdl-protection],[Disable SDL protection for drawing
 outside the screen (default: enabled)]),enable_protection="$enableval",
 enable_protection="yes")

AS_IF([(test "${enable_protection}" != "yes")],
      [AC_DEFINE([DISABLE_SDL_PROTECTION], [], [Disabling SDL protection for
drawing outside the screen])])

AC_MSG_NOTICE([Checking for --disable-sdl-protection option])

########################## Command line options ###################

# Disable/enable tracing options for interpreter:
#      --trace-act
#      --trace-tree
#      --trace-silent
#      --debug
AC_ARG_ENABLE(tracing,
AS_HELP_STRING([--disable-tracing],[Disable all tracing for interpreting \
program(default: enabled)]),enable_tracing="$enableval",enable_tracing="yes")

AS_IF([(test "${enable_tracing}" != "yes")],
      [AC_DEFINE([DISABLE_TRACING], [], [Disabling tracing])])

AC_MSG_NOTICE([Checking for --disable-tracing option])

################################################################################
#
#                            PROGRAM CHECKS
#
################################################################################
AC_PROG_CXX
AC_PROG_CC

#Checking for cp
AC_CHECK_PROG(having_cp,cp,found,not found)

AS_IF([(test "${having_cp}" != "found")],
      [AC_MSG_FAILURE([cp program not found.May be you are using non standart \
environment.Please view configure.in file,"PROGRAM CHECKS" part to fix the \
problem.])])

################################################################################
#
#                            LIBRARIES CHECKS
#
################################################################################
# Checking for availability of #include <QtGui>
AC_CHECK_FILE([/usr/include/qt4/QtGui/QtGui],[],
              [AC_MSG_FAILURE([Qt 4 development files not found.\
Please install them and try again.On some Debian-based systems simply type \
in terminal: sudo apt-get install libqt4-dev .If you are using non-standart \
system environment,please review configure.in file,"LIBRARIES CHECKS" part,\
fix the path manually,use autoconf and then again configure.])])

AC_CHECK_LIB([QtGui], [connect], [],
             [AC_MSG_FAILURE([Qt 4 Gui library not found.\
Please install it and try again.On some Debian-based systems simply type \
in terminal: sudo apt-get install libqt4-gui.I don't know how it can be\
since you have /usr/include/qt4/QtGui/QtGui file in your system :O ])])

AC_CHECK_LIB([SDL], [SDL_Init], [],
              [AC_MSG_FAILURE([SDL library development files not found.\
Please install them and try again.On some Debian-based systems simply type \
in terminal: sudo apt-get install libsdl-dev])])

AC_CHECK_LIB([pthread], [pthread_create], [],
              [AC_MSG_FAILURE([You dont have POSIX threads library installed on\
 your system.Please install this library and try again.])])

################################################################################

# Checks for typedefs, structures, headers and compiler characteristics.
AC_HEADER_STDBOOL
AC_C_INLINE
AC_TYPE_SIZE_T
AC_CHECK_FUNCS([sqrt])
AC_OUTPUT

################################################################################

# This project using same config file for all interfaces(command-line and gui)
# FIXME

AC_MSG_NOTICE([Copying ./Interpreter/config/config.h to
./GUI/Qt/Basin-IDE/config.h])

cp ./Interpreter/config/config.h ./GUI/Qt/Basin-IDE/config.h

################################################################################

И в конце configure.in есть строчка копирования config.h из директории интерпретатора (autoheader принимает только один путь к config.h как я понял) в папку с GUI.То есть они используют один и тот же config.h,надо это как-то учесть(или придумать какой-то способ с одного конфигуратора генерировать все нужные файлы конфигов). А также то,что .pro файлы и все файлы,генерируемые автоматически лучше,наверное,исключить?
Просто пользователю,скорее всего,удобнее один раз запустить configure ,и один раз make,чтобы всё собралось и все нужные файлы сгенерировались. Или принято,чтобы все эти файлы были в проекте?
Что такое файлы .ts? они у меня не открываются ничем.А также файлы .qm, Doxyfile, .pro.user, .qrc (этот можно сгенерировать).
Конечно,я могу сам "причёсывать" GUI,это не проблема,но просто было бы интереснее договориться,по крайней мере какое-то подобие соглашения должно быть насчёт сборки. Ведь лучше,чтобы всё собиралось просто,или может я тут неправ?

Добавлено через 10 минут
Что-то у меня не компилится,что подправить?
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/media/src/Basin-IDE$ qmake
/media/src/Basin-IDE$ make
/usr/bin/uic-qt4 finddialog.ui -o .ui/ui_finddialog.h
Warning: name layoutWidget is already used
Warning: name layoutWidget is already used
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I.moc -I.ui -o .obj/highlighter.o highlighter.cpp
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I.moc -I.ui -o .obj/main.o main.cpp
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I.moc -I.ui -o .obj/basinmainwindow.o basinmainwindow.cpp
basinmainwindow.cpp: In member function ‘void BasinMainWindow::init()’:
basinmainwindow.cpp:19: error: ‘class TabWidget’ has no member named ‘setTabsClosable’
basinmainwindow.cpp:20: error: ‘class TabWidget’ has no member named ‘setMovable’
basinmainwindow.cpp: In member function ‘void BasinMainWindow::createActions()’:
basinmainwindow.cpp:174: error: ‘Quit’ is not a member of ‘QKeySequence’
make: *** [.obj/basinmainwindow.o] Error 1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru