Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> extern + array 
V
    Опции темы
Alca
Дата 8.6.2010, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Использую C++Builder 2010:
Test.cpp
Код

const char g_archEmptyDbContent[] = {
#include "Db.empty.zip.txt"
};


Unit1.cpp
Код

extern const char  g_archEmptyDbContent[];
//...
CxFile flDB;
flDB.bCreate();
//BOOL bWrite(LPCVOID pcvBuf, ULONG ulCount);
flDB.bWrite(&g_archEmptyDbContent[0], sizeof(g_archEmptyDbContent) / sizeof(g_archEmptyDbContent[0]);
flDB.bClose();


Ругается на sizeof(g_archEmptyDbContent):
Код

[BCC32 Error] Unit1.cpp(743): E2109 Not an allowed type


Добавлено через 14 минут и 41 секунду
Необходимо узнать размер массива в другом модуле.

Это сообщение отредактировал(а) Alca - 8.6.2010, 10:38


--------------------
PM WWW ICQ Skype Jabber   Вверх
jonie
Дата 8.6.2010, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



Alca, отдельную int переменную сделайте "размер" ее и extern-ните


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Dem_max
Дата 8.6.2010, 11:25 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 4
Всего: 39



с extern и const вместе не получается

Это сообщение отредактировал(а) Dem_max - 8.6.2010, 11:34


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Alca
Дата 8.6.2010, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Сделал так:

GlobalVars.h

Код

extern CHAR   g_archEmptyDbContent[];
extern ULONG  g_ulEmptyDbContentSize;


GlobalVars.cpp
Код

#include <vcl.h>

//---------------------------------------------------------------------------
char  g_archEmptyDbContent[] = {
#include "Db.empty.zip.txt"
};
ULONG  g_ulEmptyDbContentSize = xARRAY_SIZE(g_archEmptyDbContent);
//---------------------------------------------------------------------------


Использование:
Код

#include "GlobalVars.h"

CxFile flEmptyDB;
flEmptyDB.bCreate();
flEmptyDB.bWrite(&g_archEmptyDbContent[0], g_ulEmptyDbContentSize);
flEmptyDB.bClose();


jonie, Dem_max, спасибо.

Это сообщение отредактировал(а) Alca - 8.6.2010, 12:24


--------------------
PM WWW ICQ Skype Jabber   Вверх
mes
Дата 9.6.2010, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Dem_max @  8.6.2010,  10:25 Найти цитируемый пост)
с extern и const вместе не получается

правда ?!  smile 
 smile 


--------------------
PM MAIL WWW   Вверх
Alca
Дата 9.6.2010, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

правда ?! 

Сделал const:
Код

[ILINK32 Error] Error: Unresolved external '_g_ulEmptyDbContentSize' referenced from D:\MY\MYPROJECTS\BC++\PROJECTS\XXXDB\PROJECT\DEBUG\ULOGON.OBJ
[ILINK32 Error] Error: Unresolved external '_g_archEmptyDbContent' referenced from D:\MY\MYPROJECTS\BC++\PROJECTS\XXXDB\PROJECT\DEBUG\ULOGON.OBJ


GlobalVars.h
Код

extern const CHAR   g_archEmptyDbContent[];
extern const ULONG  g_ulEmptyDbContentSize;


GlobalVars.cpp
Код

const char  g_archEmptyDbContent[] = {
#include "Units\XXXDb.empty.zip.txt"
};
const ULONG  g_ulEmptyDbContentSize = xARRAY_SIZE(g_archEmptyDbContent);


uLogon.cpp
Код

#include "GlobalVars.h"
...


Добавлено через 3 минуты и 48 секунд
Убрал const в cpp-шнике - скомпилилось

Добавлено через 4 минуты и 24 секунды
GlobalVars.cpp
Код

/*const*/ char  g_archEmptyDbContent[] = {
#include "Units\XXXDb.empty.zip.txt"
};
/*const*/ ULONG  g_ulEmptyDbContentSize = xARRAY_SIZE(g_archEmptyDbContent);


Добавлено через 5 минут и 21 секунду
ха-ха  smile 

Это сообщение отредактировал(а) Alca - 9.6.2010, 10:36


--------------------
PM WWW ICQ Skype Jabber   Вверх
mes
Дата 9.6.2010, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Alca @  9.6.2010,  09:34 Найти цитируемый пост)
ха-ха  smile 

константы по умолчанию не "расшарены", поэтому при определении внешней константы обязательно использовать модификатор extern.

Код

extern const char  g_archEmptyDbContent[] = {
#include "Units\XXXDb.empty.zip.txt"
};
extern const ULONG  g_ulEmptyDbContentSize = xARRAY_SIZE(g_archEmptyDbContent);

smile

Это сообщение отредактировал(а) mes - 9.6.2010, 10:57


--------------------
PM MAIL WWW   Вверх
Alca
Дата 9.6.2010, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



mes, спасибо, буду знать


--------------------
PM WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0555 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.