#include <vector>
#using namespace std;
....
#ifdef USE_DOUBLE
typedef double TFPType;
#else
typedef float TFPType;
#endif /* USE_DOUBLE */
typedef vector<TFPType> TSignal;
Использование STL в С++ Builder
Подскажите плиз.. не могу преодолеть ошибку компиляции
в следующем коде:
Код:
выдаёт: [C++ Error] Types.h(20): E2257 , expected в строчке с TSignal
в среде VS2005 такого не возникало=\
Код:
#using namespace std;
у вас ошибка - директиву using нужно на самом деле писать без знака #. Хотя с билдером не работал, но думаю что в нем действует стандартный синтаксис C++...
Но если это исправление не поможет, то лучше вам привести полный текст ошибки (в написали "[C++ Error] Types.h(20): E2257 , expected", желательно узнать - а что именно "expected").
Код:
using namespace std;
Без диеза.
Цитата: Ghox
(в написали "[C++ Error] Types.h(20): E2257 , expected", желательно узнать - а что именно "expected").
Запятая expected :) Только вот автор почему то не привел ошибку, которая ей предшествует
[C++ Error] Unit1.cpp(12): E2048 Unknown preprocessor directive: 'using'
неее =) .. народ, прост перебивал и на автомате написал диез, сорри.. а так проблема не в этом..
Цитата:
(в написали "[C++ Error] Types.h(20): E2257 , expected", желательно узнать - а что именно "expected").
вот в этом-то вся и фигня .. кроме этой строчки больше ничего нету.. и не могу понять что он от меня хочет..
вот такая вещь
Код:
typedef double TFPType;
без проблем компилируется
Ну и давайте уже полный код файла до кучи. У меня приведенный фрагмент компилирутеся без проблем.
пишу статическую библиотечку, поэтому всё раскидано по разным файлам..
файл Types.h
Код:
#ifndef TypesH
#define TypesH
#ifdef USE_DOUBLE
typedef double TFPType;
#else
typedef float TFPType;
#endif /* USE_DOUBLE */
typedef vector<TFPType> TSignal;
#endif
#define TypesH
#ifdef USE_DOUBLE
typedef double TFPType;
#else
typedef float TFPType;
#endif /* USE_DOUBLE */
typedef vector<TFPType> TSignal;
#endif
Types.cpp
Код:
#pragma hdrstop
#include "Types.h"
#pragma package(smart_init)
#include "Types.h"
#pragma package(smart_init)
SysLib.h
Код:
#ifndef SysLibH
#define SysLibH
/////////////////////////////////////////////////////////////////////////////
// System
/////////////////////////////////////////////////////////////////////////////
// STL
#include <vector>
using namespace std;
#endif
#define SysLibH
/////////////////////////////////////////////////////////////////////////////
// System
/////////////////////////////////////////////////////////////////////////////
// STL
#include <vector>
using namespace std;
#endif
Код:
#pragma hdrstop
#include "SysLib.h"
#pragma package(smart_init)
#include "SysLib.h"
#pragma package(smart_init)
Цитата: #Monster#
Код:
#ifndef TypesH
#define TypesH
#ifdef USE_DOUBLE
typedef double TFPType;
#else
typedef float TFPType;
#endif /* USE_DOUBLE */
typedef vector<TFPType> TSignal;
#endif
#define TypesH
#ifdef USE_DOUBLE
typedef double TFPType;
#else
typedef float TFPType;
#endif /* USE_DOUBLE */
typedef vector<TFPType> TSignal;
#endif
Стоп. А куда дели
Код:
#include <vector>
using namespace std;
using namespace std;
Чтобы ваш Types.cpp скомпилился, это надо добавить в Types.h.
пасибо nikitozz :)
PS: но здесь конечно и ошибку сразу не удалось определить потому что компилятор сообщение непонятное выдал.. это всё Borland виноват)
получается разницы между STL для Borland'a и Microsoft'a никакой нет?
STL - это вообщето стандартная библиотека шаблонов. Оно потому стандартной и называется - что не зависит от среды разработки