UWP C ++: запись только вместо чтения в глобальную переменную? - PullRequest
0 голосов
/ 02 марта 2019

У меня есть отдельный заголовочный файл, в котором я объявляю глобальные переменные.Я включил этот заголовочный файл в pch.h, который включен в каждый файл .cpp.#include "variable.h" Теперь мне нужно вызвать переменную и прочитать ее в условии if, чтобы начать код.Перед компиляцией ошибки не отображаются в Visual Studio.Однако, когда я компилирую код, он возвращает ошибку:

Error   LNK2005 "bool ahschecked" (?ahschecked@@3_NA) already defined in checkin.xaml.obj   pch.h

Переменная «ahschecked» типа Boolean и файл, из которого я пытаюсь прочитать глобальную переменную, - checkin.xaml.obj,исходное объявление переменной в pch.h

Это раньше работало в формах Windows, но когда я перешел на UWP, я не смог заставить его работать.


Iвоссоздали эту проблему с помощью меньшей программы.

Var.h (где хранится глобальная переменная)

#pragma once
extern bool globalbool = false;
#pragma endregion

pch.h (автоматически включается в каждый .cpp)

#pragma once
#include <collection.h>
#include <ppltasks.h>
#include "App.xaml.h"
#include "var.h"

MainPage.xaml.cpp (попытка чтения из глобальной переменной)

#incldue "pch.h"
#include "MainPage.xaml.h"

void testapp::MainPage::Button_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) {
if (::globalbool == false)
{
// do something
}
}

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Мне удалось решить эту проблему, объявив глобальную переменную в заголовочном файле без каких-либо прикрепленных к ней значений, а затем прикрепив значения к ней позже снаружи в файле .cpp.

0 голосов
/ 02 марта 2019

Я полагаю, что вы не объявили глобальную переменную как extern, но, не видя никакого кода, трудно быть уверенным.

Вы должны объявить свои глобальные переменные как extern в заголовочном файле, а затем в одном исходном файле вы также должны определить глобальную переменную без extern.

Этот способ объявления и определения глобальногопеременные верны для любой программы на C ++.Не имеет значения, пишете ли вы программу Windows Forms или программу UWP.

Поскольку у вас есть файл заголовка для объявлений глобальных переменных, также имеет смысл иметь исходный файл для определений глобальных переменных.

...