powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите объявить глобальную переменную (не смешно)
5 сообщений из 5, страница 1 из 1
Помогите объявить глобальную переменную (не смешно)
    #34107043
дед Макар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При объявлении глобальной переменной получаю ошибку

TestClass.obj : error LNK2005: "int globPerem" (?globPerem@@3HA) already defined in testGlobal.obj
D:\CVSHome\VCPP\testGlobal\Debug\testGlobal.exe : fatal error LNK1169: one or more multiply defined symbols found
Build log was saved at "file://d:\CVSHome\VCPP\testGlobal\testGlobal\Debug\BuildLog.htm"
testGlobal - 2 error(s), 0 warning(s)


testGlobal.cpp
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
#include "stdafx.h"
#include "testGlobal.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

CWinApp theApp;

using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
	int nRetCode =  0 ;
	if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(),  0 ))
	{
		_tprintf(_T("Fatal Error: MFC initialization failed\n"));
		nRetCode =  1 ;
	}
	else
	{
	}
	return nRetCode;
}

testGlobal.h
Код: plaintext
1.
2.
3.
4.
#pragma once

#include "resource.h"

int globPerem;

testClass.cpp
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
#include "stdafx.h"
#include "testGlobal.h"
#include "TestClass.h"

IMPLEMENT_DYNAMIC(CTestClass, CWnd)

CTestClass::CTestClass()
{
	globPerem =  4 ;
}

CTestClass::~CTestClass()
{
}


BEGIN_MESSAGE_MAP(CTestClass, CWnd)
END_MESSAGE_MAP()

testClass.h
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
#pragma once

class CTestClass : public CWnd
{
	DECLARE_DYNAMIC(CTestClass)

public:
	CTestClass();
	virtual ~CTestClass();

protected:
	DECLARE_MESSAGE_MAP()
};

Хелп
...
Рейтинг: 0 / 0
Помогите объявить глобальную переменную (не смешно)
    #34107132
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оба срр-файла включают testGlobal.h, в котором объявлена переменная globPerem. Получается что в каждом срр-файле есть своя копия этой переменной.

Можно обойти так:
testGlobal.h:
extern int globPerem;

testGlobal.cpp:
#include "testGlobal.h"
int globPerem; //вот тут она размещена ровно один раз

testClass.cpp
#include "testGlobal.h"
...
Рейтинг: 0 / 0
Помогите объявить глобальную переменную (не смешно)
    #34107247
LeonM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ext.h:
extern int g_var;

ext.cpp:
int g_var;

Файл ext.h включается всюду, где используется g_var.
...
Рейтинг: 0 / 0
Помогите объявить глобальную переменную (не смешно)
    #34107250
LeonM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pardon, I was too late.
...
Рейтинг: 0 / 0
Помогите объявить глобальную переменную (не смешно)
    #34107268
дед Макар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогло, спасибо.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите объявить глобальную переменную (не смешно)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]