информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медSpanning Tree Protocol: недокументированное применениеСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / operating systems
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Дык из C-шного файла подключать CPP-шный хедер нехорошо 12.12.02 13:00  Число просмотров: 1796
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
VC различает какой перед ним файл только по расширению
Если уж так надо включать его из всех файлов, поставь что-нить типа
#ifdef __cplusplus
// blablabla
#endif

---
<operating systems>
[NT] DDK: помогите скомпилировать *.cpp 12.12.02 01:30  
Автор: vim Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Подключил к своему проекту файл на cpp, а проект не хочет компилироваться. Компилятор не воспринимает слово class.

Может какую глобальную опцию включить надо?
Подскажите кто знает, плиз

Вот фрагмент компиляции:

D:\Work\NetworkAgent\Driver5M>build -cbv
BUILD: Object root set to: ==> objchk
BUILD: /i switch ignored
BUILD: Compile and Link for i386
BUILD: Loading d:\DDKWIN2K\build.dat...
BUILD: Computing Include file dependencies:
BUILD: Examining d:\work\networkagent\driver5m directory for files to compile
    d:\work\networkagent\driver5m - 17 source files (7,784 lines)
BUILD: Compiling d:\work\networkagent\driver5m directory
Compiling - dlog.c for i386
vector.h(4) : error C2061: syntax error : identifier 'Vector'
vector.h(4) : error C2059: syntax error : ';'
vector.h(5) : error C2449: found '{' at file scope (missing function header?)
vector.h(30) : error C2059: syntax error : '}'

---

и т.д. - всего 276 errors

Вот это vector.h, на котором он вылетает:

#ifndef _VECTOR_H
#define _VECTOR_H

class Vector
{
private:
	void **m_pArray;
	int m_Size;
	int m_AllocatedSize;
	int m_AllocationStep;

	void EnsureSize(int RequiredSize);

public:
	Vector();
	virtual ~Vector();

	void Add(void *pItem);
	void Set(int index, void* pItem);
	void* Get(int index);

	void Remove(int index);
	void Remove(void *pItem);
	void RemoveAll();

	int Find(void *pItem);
	int Size();

	void SetSize(int Size);
};

#endif

---

а это source:

TARGETNAME=driver5M
TARGETPATH=D:\Work\NetworkAgent\Driver5M\bin
TARGETTYPE=DRIVER
DDK_LIB_PATH=D:\DDKWIN2K\libchk\i386

TARGETLIBS=$(DDK_LIB_PATH)\libc.lib

SOURCES=Vector.cpp\
	String.cpp\
	DLog.c\
	DriverMain.c\
	FileSystem.c\
	LocalNetwork.c\
	Process.c\
	Utils.c\
	Print.c\
	NhkUtils.c\
	Password.c\
	Registry.c\
	GetLongFilename.c\
	PathComponent.cpp\
	PathTemplate.cpp\
	ConfigEntry.cpp\
	ConfigStorage.cpp

---

Makefile стандартный:

#
# DO NOT EDIT THIS FILE!!!  Edit .\sources. if you want to add a new source
# file to this component.  This file merely indirects to the real make file
# that is shared by all the driver components of the Windows NT DDK
#

!INCLUDE $(NTMAKEENV)\makefile.def

---


Дык из C-шного файла подключать CPP-шный хедер нехорошо 12.12.02 13:00  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
VC различает какой перед ним файл только по расширению
Если уж так надо включать его из всех файлов, поставь что-нить типа
#ifdef __cplusplus
// blablabla
#endif

---
а я его пока не подключаю 12.12.02 14:21  
Автор: vim Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> VC различает какой перед ним файл только по расширению
> Если уж так надо включать его из всех файлов, поставь
> что-нить типа
>
> #ifdef __cplusplus
> // blablabla
> #endif
> 

---

У меня ни один C-файл не обращается к CPP-хедеру.
Я их пока только добавил в makefile чтобы посмотреть пройдет ли компиляция.


Может я чего не понимаю - сильно не бейте, но 12.12.02 15:11  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
Что это тогда может значить:
Compiling - dlog.c for i386
vector.h(4) : error C2061: syntax error : identifier 'Vector'
vector.h(4) : error C2059: syntax error : ';'

---

По мойму - как раз то, что vector.h каким-то образом (может через хедер прекомпиленный или еще как) включился в dlog.c

ЗЫ: Хотя на самом деле первое, что мне пришло в голову - что компилер не вернулся в global scope (несбалансированные скобки, недостающая точка с запятой etc.) и пытался компилить объявление класса там, где синтаксически его не может быть. Это может быть в хедерах подключенных до того, в котором эта ошибка проявилась
я это тоже заметил - он не в том порядке компилирует 12.12.02 15:35  
Автор: vim Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Что это тогда может значить:
>
> Compiling - dlog.c for i386
> vector.h(4) : error C2061: syntax error : identifier
> 'Vector'
> vector.h(4) : error C2059: syntax error : ';'
> 

---
>
> По мойму - как раз то, что vector.h каким-то образом (может
> через хедер прекомпиленный или еще как) включился в dlog.c
>
> ЗЫ: Хотя на самом деле первое, что мне пришло в голову -
> что компилер не вернулся в global scope (несбалансированные
> скобки, недостающая точка с запятой etc.) и пытался
> компилить объявление класса там, где синтаксически его не
> может быть. Это может быть в хедерах подключенных до того,
> в котором эта ошибка проявилась

Первым в sources прописан vector.cpp, по идее он и должен первым компилироваться

SOURCES=Vector.cpp\
	String.cpp\
	DLog.c\
	DriverMain.c\
	FileSystem.c\
	LocalNetwork.c\
	Process.c\
	Utils.c\
	Print.c\
	NhkUtils.c\
	Password.c\
	Registry.c\
	GetLongFilename.c\
	PathComponent.cpp\
	PathTemplate.cpp\
	ConfigEntry.cpp\
	ConfigStorage.cpp

---

А первым пошел DLog.c
Я поудалял все временные файлы из директории проекта, это ничего не изменило. Правда я смотрю тут еще один файл используется

BUILD: Loading d:\DDKWIN2K\build.dat...

---

Надо будет попробовать его удалить. Может в нем какой старый мусор остался

А Dlog.c не включает в себя vector.h.
нашел в чем там дело было 14.12.02 03:25  
Автор: vim Статус: Незарегистрированный пользователь
<"чистая" ссылка>
В моем проекте был класс String, и соответственно хедер-файл String.h, а в ddk\include тоже имеется свой string.h
Компилятор вместо своего string.h брал мой string.h и пытался его компилировать. Отсюда все эти странные ошибки.
После переименования моего String.h в CString.h и все стало нормально.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach