2086 8 ошибка

Ошибка P2086 — Датчик температуры отработавших газов 2, банк 2 – диапазон/производительность

Определение — ошибка P2086

Ошибка P2086 указывает на наличие неисправности, связанной с работой датчика температуры отработавших газов 2 (банк 2). “Банк 2”, как правило, относится к стороне двигателя, противоположной той, где находится цилиндр 1.

Что означает ошибка P2086

Ошибка P2086 является общим кодом ошибки, который указывает на то, что модуль управления двигателем (ECM) обнаружил, что показания или рабочие характеристики датчика температуры отработавших газов 2 (банк 2) находятся вне диапазона, установленного производителем автомобиля. При появлении данной ошибки на приборной панели автомобиля загорится индикатор Check Engine, указывающий на наличие неисправности.

Причины возникновения ошибки P2086

Наиболее распространенными причинами возникновения ошибки P2086 являются:

  • Неисправность датчика температуры отработавших газов 2 (банк 2)
  • Короткое замыкание на бортовую сеть датчика температуры отработавших газов 2 (банк 2)
  • Короткое замыкание или обрыв электрических проводов, относящихся к датчику температуры отработавших газов 2 (банк 2)
  • Плохое электрическое соединение в цепи датчика температуры отработавших газов 2 (банк 2)
  • В редких случаях, неисправность модуля управления двигателем (ECM)

Каковы симптомы ошибки P2086?

Основными признаками возникновения данной ошибки являются:

  • Сохранение кода P2086 в памяти ECM и загорание индикатора Check Engine на приборной панели автомобиля
  • Загорание контрольной лампы сажевого фильтра дизельного двигателя

Как механик диагностирует ошибку P2086?

При диагностировании ошибки P2086 механик выполнит следующее:

  • Подключит сканер OBD-II к диагностическому разъему автомобиля и считает все сохраненные данные и коды ошибок
  • Очистит коды ошибок с памяти компьютера и проведет тест-драйв автомобиля, чтобы выяснить, появляется ли код P2086 снова
  • Если код ошибки появится снова, визуально осмотрит электрические провода и соединители, относящиеся к датчику температуры отработавших газов 2 (банк 2), и при необходимости отремонтирует или заменит все ослабленные, закороченные, поврежденные или подвергнутые действию коррозии компоненты
  • Измерит сопротивление и напряжение в цепи датчика температуры отработавших газов 2 (банк 2) с помощью цифрового вольтомметра, сравнит полученные значения со значениями, указанными в технических условиях производителя, и при необходимости заменит неисправный датчик
  • Если проблему не будет обнаружено, проверит и при необходимости заменит и перепрограммирует модуль управления двигателем (ECM)

Частые ошибки при диагностировании кода P2086

Наиболее распространенными ошибками при диагностировании данного кода являются:

  • Очистка кодов ошибок с памяти ECM без предварительного просмотра всех сохраненных данных
  • Пренебрежение очисткой кода ошибки P2086 с памяти ECM после устранения неисправности
  • Поспешная замена датчика температуры отработавших газов 2 (банк 2) без предварительной проверки соответствующих электрических проводов и соединителей

Насколько серьезной является ошибка P2086?

Ошибка P2086 считается не очень серьезной, так как при ее появлении обычно не возникает серьезных проблем с управляемостью автомобиля. Однако если проблему долго не решать, это может привести к повреждению двигателя или других компонентов автомобиля. При обнаружении данного кода рекомендуется как можно скорее обратиться к квалифицированному специалисту для диагностирования и устранения ошибки.

Какой ремонт может исправить ошибку P2086?

Для устранения ошибки P2086 может потребоваться:

  • Замена датчика температуры отработавших газов 2 (банк 2)
  • Ремонт или замена электрических проводов, относящихся к датчику температуры отработавших газов 2 (банк 2)
  • Ремонт или замена разъема датчика температуры отработавших газов 2 (банк 2)
  • В редких случаях, замена модуля управления двигателем (ECM)

Дополнительные комментарии для устранения ошибки P2086

Наиболее распространенной причиной возникновения ошибки P2086 является ненадлежащее подключение или ослабление электрических проводов или разъема датчика температуры отработавших газов 2 (банк 2).

Нужна помощь с кодом ошибки P2086?

Компания — CarChek, предлагает услугу — выездная компьютерная диагностика, специалисты нашей компании приедут к вам домой или в офис, чтобы диагностировать и выявлять проблемы вашего автомобиля. Узнайте стоимость и запишитесь на выездную компьютерную диагностику или свяжитесь с консультантом по телефону +7(499)394-47-89

Похожие статьи

У меня нет машины
Иркутск, Россия

Всем доброго времени суток!
Съездил на диагностику, делали лаунчем, показало следующие ошибки (см. ниже).

Не подскажите кто и как с ними боролся?

Машина W211 E240 2002г

P2017-002 Самоадаптация формирования смеси для правого берега цилиндров в предельном значении (в скорости холостого хода). Обеднение ниже допустимого предела (P0172)

P2086-002 Самоадаптация формирования смеси для левого ряда цилиндров в предельном значении (в скорости холостого хода). Обеднение ниже допустимого предела (P0175)

P2089-008 Нагревательный элемент конструктивного узел G3/5 (Левый датчик O2, после тройного нейтрализатора [нейтрализатор]): Согревающая способность понижена. (P0161)

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

  • #1

Сегодня утром завел машину а «джеки чан» так и не потух после заводки. В обед прочитал ошибку (см. фото). Вроде как что то у сажевика. Посмотрели показатели температуры (см. фото). Сбросили ошибку. Завтра утром посмотрю вылезет ли снова.
Датчики глюк поймали или начался какой то нехороший процесс, как думаете?

Вложения

  • 20180903_133434.jpg

    20180903_133434.jpg

    1.4 MB · Просмотры: 16

  • 20180903_133755.jpg

    20180903_133755.jpg

    1.5 MB · Просмотры: 18

Рассмотрим подробнее

  1. Техническое описание и расшифровка ошибки P2086
  2. Симптомы неисправности
  3. Причины возникновения ошибки
  4. Как устранить или сбросить код неисправности P2086
  5. Диагностика и решение проблем
  6. Проверка датчика и системы EGR
  7. На каких автомобилях чаще встречается данная проблема
  8. Видео

Код ошибки P2086 звучит как «несоответствие диапазона рабочих характеристик в цепи датчика температуры отработавших газов (Банк 2, Датчик 2)». Часто, в программах, работающих со сканером OBD-2, название может иметь английское написание «Exhaust Gas Temperature (EGT) Sensor Circuit Range/Performance (Bank 2, Sensor 2)».

Этот диагностический код неисправности (DTC) является общим кодом трансмиссии. Ошибка P2086 считается общим кодом, поскольку применяется ко всем маркам и моделям транспортных средств. Хотя конкретные этапы ремонта могут несколько отличаться в зависимости от модели.

Код ошибки P2086 – несоответствие диапазона рабочих характеристик в цепи датчика температуры отработавших газов (Банк 2, Датчик 2)

EGR отвечает за рециркуляцию выхлопных газов. Он является частью системы выброса выхлопных газов автомобиля. Используется для снижения температуры, давления сгорания, а также для контроля оксидов азота.

Функция датчика температуры отработавших газов состоит в том, чтобы контролировать температуру в системе рециркуляции. И соответствующим образом регулировать поток с помощью клапана рециркуляции отработавших газов. Который построен на основе обычного термочувствительного датчика резисторного типа.

Чем выше температура выхлопных газов, тем меньше сопротивление относительно земли, что приводит к повышению напряжения. И наоборот, чем ниже температура, тем больше сопротивление, что приводит к снижению напряжения.

Если PCM обнаруживает изменение напряжение, компьютер изменяет фазы газораспределения или соотношение топлива. Чтобы поддерживать температуру в пределах допустимого диапазона внутри преобразователя.

В дизельных двигателях показатель от датчика температуры отработавших газов используется для определения времени регенерации сажевого фильтра.

Когда модуль управления трансмиссией (PCM) обнаруживает несоответствие диапазона рабочих характеристик в цепи датчика температуры отработавших газов (Банк 2, Датчик 2). Код неисправности P2086 будет записан в память, а также появится сообщение о ошибке на панели управления.

Симптомы неисправности

Основным симптомом появления ошибки P2086 для водителя является подсветка MIL (индикатор неисправности). Также его называют Check engine или просто «горит чек».

Также они могут проявляться как:

  1. Загорится контрольная лампа «Check engine» на панели управления (код будет записан в память как неисправность).
  2. Увеличенный шум двигателя, также может присутствовать звон и дребезжание.
  3. Увеличение выбросов вредных веществ в выхлопе.
  4. Чрезмерный запах выхлопных газов.
  5. Могут быть и другие симптомы.

По технической части, ошибка P2086 не считается серьезной, но в экологическом плане, сильно повышаются выбросы вредных веществ. Однако исправлять проблему необходимо, ведь любая неполадка может привести к более серьезным последствиям.

Причины возникновения ошибки

Код P2086 может означать, что произошла одна или несколько следующих проблем:

  • Неисправен датчик температуры отработавших газов.
  • Короткое замыкание на землю или внутри датчика температуры отработавших газов.
  • Утечка в прокладке датчика температуры системы рециркуляции ОГ.
  • Треснувшая или негерметичная выхлопная труба, в которой установлен датчик.
  • Жгут проводов или датчик могут быть с повреждениями.
  • Провода имеют обрыв или замыкание.
  • Поврежденный разъем.
  • Послепродажная установка выхлопной системы, которая вызывает проблемы с давлением.
  • Прерывистая связь с блоком управления.
  • Иногда причиной является неисправный модуль ECM.

Как устранить или сбросить код неисправности P2086

Некоторые предлагаемые шаги для устранения неполадок и исправления кода ошибки P2086:

  1. Очистите коды ошибок и проведите тест-драйв автомобиля, чтобы выяснить появляется ли код P2086 снова.
  2. Визуально осмотрите датчик температуры отработавших газов и все соответствующие цепи, особенно в местах контакта с горячими компонентами.
  3. Проверьте соединители на предмет ослабления и наличия коррозии.
  4. Осмотрите провода на наличие повреждений, которые могут привести к короткому замыканию.
  5. Проверьте сопротивление датчика температуры отработавших газов с помощью омметра.
  6. Протестируйте датчик температуры отработавших газов.
  7. Проверьте наличие утечек в системе.
  8. Протестируйте модуль ECM и связь с ним.

Диагностика и решение проблем

Сначала необходимо считать все сохраненные данные и коды ошибок с помощью сканера. Затем очистить коды ошибок и провести тест-драйв автомобиля. Чтобы выяснить, появляется ли ошибка P2086 снова.

После этого визуально осмотреть датчик температуры отработавших газов, стоит обратить внимание на утечки выхлопных газов. Также проверить сам датчик и жгут проводов, подходящих к нему. Высокие температуры могут вызвать повреждение проводов с пластмассовой и резиновой изоляцией, поэтому внимательно их проверяйте.

Черная сажа может указывать на утечку выхлопных газов, поэтому внимательно осмотрите места соединений.

Проверка датчика и системы EGR

Многие проблемы с рециркуляцией отработавших газов, вызваны скоплением сажи в выхлопе. Поэтому может быть полезно очистить систему EGR или, по крайней мере, датчик температуры.

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

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

Если неисправен сам датчик, для устранения кода P2086 в качестве временной меры можно установить резистор на 2,2 Ом. Просто удалите датчик EGT и подключите резистор к электрическому разъему на стороне двигателя, изолируйте его, и компьютер убедится, что EGT работает правильно.

На каких автомобилях чаще встречается данная проблема

Проблема с кодом P2086 может встречаться на различных машинах, но всегда есть статистика, на каких марках эта ошибка присутствует чаще. Вот список некоторых из них:

  • Alfa Romeo
  • Audi
  • Chevrolet
  • Dodge (Додж Рам)
  • Ford
  • GMC
  • Mazda (Мазда 6)
  • Mercedes (Мерседес w203)
  • Volkswagen

С кодом неисправности Р2086 иногда можно встретить и другие ошибки. Наиболее часто встречаются следующие: P2034, P2035, P2036, P2087.

Видео

Перейти к контенту

vip72

11 / 11 / 7

Регистрация: 18.01.2014

Сообщений: 180

Записей в блоге: 1

1

21.08.2014, 02:11. Показов 5270. Ответов 3

Метки нет (Все метки)


Хочу программу заделать чтобы нагрузить немного свой сайт (в коде на примере гугла)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int main()
{
    char cmd[1024];
    sprintf (cmd,"ping google.com -t -l 10000");
    int exit_status = system(cmd);
    char cmd[1024];
    sprintf (cmd,"ping google.com -t -l 10000");
    int bexit_status = system(cmd);
    char cmd[1024];
    sprintf (cmd,"ping google.com -t -l 10000");
    int aexit_status = system(cmd);
    return 0;
}

То есть я одновременно пытаюсь запустить проверку пинга у гугла 3 раза, обычно это делают запустив 3 раза отдельно командную строку и запуская проверку, а я хочу одновременно в одной

Лог:

1>—— Построение начато: проект: lol2, Конфигурация: Debug Win32 ——
1>Компиляция…
1>main.cpp
1>c:usersasusdocumentsvisual studio 2008projectslol2lol2main.cpp(7) : warning C4996: ‘sprintf’: This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:program files (x86)microsoft visual studio 9.0vcincludestdio.h(366): см. объявление ‘sprintf’
1>c:usersasusdocumentsvisual studio 2008projectslol2lol2main.cpp(9) : error C2086: char cmd[1024]: переопределение
1> c:usersasusdocumentsvisual studio 2008projectslol2lol2main.cpp(6): см. объявление ‘cmd’
1>c:usersasusdocumentsvisual studio 2008projectslol2lol2main.cpp(12) : error C2086: char cmd[1024]: переопределение
1> c:usersasusdocumentsvisual studio 2008projectslol2lol2main.cpp(6): см. объявление ‘cmd’
1>Журнал построения был сохранен в «file://c:UsersasusDocumentsVisual Studio 2008Projectslol2lol2DebugBuildLog.htm»
1>lol2 — ошибок 2, предупреждений 1
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

John Prick

2060 / 1592 / 679

Регистрация: 27.07.2012

Сообщений: 4,768

21.08.2014, 02:22

2

C++
1
2
3
4
5
6
7
8
9
int main()
{
    char cmd[1024];
//...
    char cmd[1024];
//...
    char cmd[1024];
//...
}

Три раза объявляешь один и тот же массив. Либо сделай разные массивы (cmd1, cmd2 …), либо убери эти повторные объявления.

1

vip72

11 / 11 / 7

Регистрация: 18.01.2014

Сообщений: 180

Записей в блоге: 1

21.08.2014, 03:06

 [ТС]

3

Как-то так чтоли:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int main()
{
    char cmd[1024];
    sprintf (cmd,"ping google.com -t -l 10000");
system(cmd);
    char cmd[1024];
    sprintf (cmd,"ping google.com -t -l 10000");
system(cmd);
    char cmd[1024];
    srintf (cmd,"ping google.com -t -l 10000");
    system(cmd);
    return 0;
}

Всё равно те же ошибки, напишите пожалуйста рабочий код, я просто новичек

Добавлено через 35 минут
Как бы получилось, но вроде как по отдельности пингует:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
int main()
{
    char cmd[1024];
    sprintf_s (cmd,"ping google.com -n 5");
    system(cmd);
    char cmd1[2048];
    sprintf_s (cmd,"ping google.com -n 6");
    system(cmd1);
    char cmd2[2048];
    sprintf_s (cmd,"ping google.com -n 7");
    system(cmd2);
    system("pause");
    return 0;
}

Первый пропингует а потом 2 ошибк подряд что слишком длинная входная строка, а надо одновременно пинговать

0

КОП

1123 / 794 / 219

Регистрация: 15.08.2010

Сообщений: 2,180

21.08.2014, 06:33

4

Цитата
Сообщение от vip72
Посмотреть сообщение

sprintf_s (cmd,»ping google.com -n 6″);
* * system(cmd1);

для начала неплохо бы исправить cmd на cmd1 и cmd2 соответственно

Добавлено через 1 час 13 минут
И что значит одновременно? Какой смысл в три потока пинговать один сервер?

так пойдет?

C++
1
2
3
ShellExecute(NULL, NULL, L"C:WindowsSystem32ping", L"google.com -n 5", NULL, SW_NORMAL);
    ShellExecute(NULL, NULL, L"C:WindowsSystem32ping", L"google.com -n 6", NULL, SW_NORMAL);
    ShellExecute(NULL, NULL, L"C:WindowsSystem32ping", L"google.com -n 7", NULL, SW_NORMAL);

Добавлено через 1 час 43 минуты
пардон, отвлекся, забыл, что цель — нагрузка сервера. Тогда можно все в 1 консоли, но мусора там будет…

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "stdafx.h"
#include <iostream>
#include <windows.h>
 
using namespace std;
 
//===========================================================================
//---------------------------------------------------------------------------
 
void Thread1()
{
    system("C:WindowsSystem32ping google.com -n 5");
}
 
 
int main()
{
    int n;
    cin >> n; //кол-во потоков
    for (int i = 0; i < n; i++)
    CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)Thread1, NULL, 0, 0);
 
    system("pause");
    return 0;
}

1

У меня есть некоторые проблемы с моим кодом C ++. Я пытаюсь теперь разделить заголовочный файл, который содержит определения и объявления некоторых указателей на символы (ранее строки, но у меня были некоторые проблемы с CRT, поэтому я изменил их на указатель на символ). Так как я изменил их на указатель на символ, я получаю ошибки переопределения.

test.h

#pragma once
#define DllExport   __declspec( dllexport )

#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <map>
#include <stdexcept>
#include "TestConstantsHeader.cpp"
namespace DataVerifier
{
class DllExport CDataVerifier
{
public:
CDataVerifier();
~CDataVerifier();

//! @brief A function that processes the messages
void Process();
};
}

test.cpp

#include "Test.h"
using namespace DataVerifier;

CDataVerifier::CDataVerifier()
{
}

CDataVerifier::~CDataVerifier(){}

void CDataVerifier::Process()
{
const char* strTmp = Structure::strHTMLTemplate;
strTmp = "hello";
std::cout << strTmp;
}

TestConstantsHeader.h

#pragma once
#define DllExport   __declspec( dllexport )

#include <iostream>

namespace DataVerifier
{
namespace Structure
{
const char *strHTMLTemplate;/* = "<doctype html>""<html lang="en">""<head>""<meta charset="utf-8"/>""<title>Data Verifier Test Results - {@testdesc}</title>""<style>""body {""tbackground: none repeat scroll 0 0 #F3F3F4;""tcolor: #1E1E1F;""tfont-family: "Segoe UI",Tahoma,Geneva,Verdana,sans-serif;""tmargin: 0;""tpadding: 0;""}""h1 {""tbackground-color: #E2E2E2;""tborder-bottom: 1px solid #C1C1C2;""tcolor: #201F20;""tfont-size: 21pt;""tfont-weight: normal;""tmargin: 0;""tpadding: 10px 0 10px 10px;""}""h2 {""tfont-size: 18pt;""tfont-weight: normal;""tmargin: 0;""tpadding: 15px 0 5px;""}""h3 {""tbackground-color: rgba(0, 0, 0, 0);""tfont-size: 15pt;""tfont-weight: normal;""tmargin: 0;""tpadding: 15px 0 5px;""}""a {""tcolor: #1382CE;""}""table {""tborder-collapse: collapse;""tborder-spacing: 0;""tfont-size: 10pt;""}""table th {""tbackground: none repeat scroll 0 0 #E7E7E8;""tfont-weight: normal;""tpadding: 3px 6px;""ttext-align: left;""ttext-decoration: none;""}""table td {""tbackground: none repeat scroll 0 0 #F7F7F8;""tborder: 1px solid #E7E7E8;""tmargin: 0;""tpadding: 3px 6px 5px 5px;""tvertical-align: top;""}"""".textCentered {""ttext-align: center;""}"".messageCell {""twidth: 100;""}""#content {""tpadding: 0 12px 12px;""}""#overview table {""tmax-width: 75;""twidth: auto;""}""#messages table {""twidth: 97;""}""</style>""</head>""<body>""<div id="big_wrapper">""t<h1>Test Results - {@testdesc}</h1>""t<table>""{@eeddata}""t</table>""</body>""</html>";*/
}
}

TestConstantsHeader.cpp

#include "TestConstantsHeader.h"
namespace DataVerifier
{
namespace Structure
{
const char *strHTMLTemplate = "<doctype html>""<html lang="en">""<head>""<meta charset="utf-8"/>""<title>Data Verifier Test Results - {@testdesc}</title>""<style>""body {""tbackground: none repeat scroll 0 0 #F3F3F4;""tcolor: #1E1E1F;""tfont-family: "Segoe UI",Tahoma,Geneva,Verdana,sans-serif;""tmargin: 0;""tpadding: 0;""}""h1 {""tbackground-color: #E2E2E2;""tborder-bottom: 1px solid #C1C1C2;""tcolor: #201F20;""tfont-size: 21pt;""tfont-weight: normal;""tmargin: 0;""tpadding: 10px 0 10px 10px;""}""h2 {""tfont-size: 18pt;""tfont-weight: normal;""tmargin: 0;""tpadding: 15px 0 5px;""}""h3 {""tbackground-color: rgba(0, 0, 0, 0);""tfont-size: 15pt;""tfont-weight: normal;""tmargin: 0;""tpadding: 15px 0 5px;""}""a {""tcolor: #1382CE;""}""table {""tborder-collapse: collapse;""tborder-spacing: 0;""tfont-size: 10pt;""}""table th {""tbackground: none repeat scroll 0 0 #E7E7E8;""tfont-weight: normal;""tpadding: 3px 6px;""ttext-align: left;""ttext-decoration: none;""}""table td {""tbackground: none repeat scroll 0 0 #F7F7F8;""tborder: 1px solid #E7E7E8;""tmargin: 0;""tpadding: 3px 6px 5px 5px;""tvertical-align: top;""}"""".textCentered {""ttext-align: center;""}"".messageCell {""twidth: 100;""}""#content {""tpadding: 0 12px 12px;""}""#overview table {""tmax-width: 75;""twidth: auto;""}""#messages table {""twidth: 97;""}""</style>""</head>""<body>""<div id="big_wrapper">""t<h1>Test Results - {@testdesc}</h1>""t<table>""{@eeddata}""t</table>""</body>""</html>";
};
};

На самом деле не знаю, что я делаю здесь не так …

Это ошибка, которую я получаю:

Ошибка 2 ошибка C2086: ‘const char * DataVerifier :: Structure :: strHTMLTemplate’: переопределение c: users suzan documents visual studio 2013 projects test1 test1 testconstantsheader.cpp 7 1 Test1
Ошибка 3 ошибка C2086: ‘const char * DataVerifier :: Structure :: strHTMLTemplate’: переопределение c: users suzan documents visual studio 2013 projects test1 test1 testconstantsheader.cpp 7 1 Test1

0

Решение

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

Изменить определение strHTMLTemplate в заголовочном файле в не определяющая декларация добавив ключевое слово extern

// TestConstantsHeader.h

namespace DataVerifier
{
namespace Structure
{
extern const char *strHTMLTemplate;
}
}

Кроме того, вероятно, имеет смысл объявить указатель как const char *const strHTMLTemplate, Это не похоже, что это должно быть изменяемым.

3

Другие решения

I get the error C2086 from Visual Studio when trying to declare a variable in a name space, define it in one code file and access it in another code file.
When building with gcc (from codeblocks), the error is
(… == path on my harddisk):

…file_one.cpp|2|error: redefinition of ‘RecvVarProxyFn Skins::fnSequenceProxyFn’
…file_one.h|4|note: ‘RecvVarProxyFn Skins::fnSequenceProxyFn’ previously declared here

Even when deactivating (using //) the access line in main(), the error is the same.

file_one.h:

typedef int RecvVarProxyFn;

namespace Skins {
    RecvVarProxyFn fnSequenceProxyFn; // "previously declared here"
}

file_one.cpp

#include "file_one.h"
RecvVarProxyFn Skins::fnSequenceProxyFn = 0; // redefinition error 2086

main.cpp

#include "file_one.h"
int main()
{   Skins::fnSequenceProxyFn = 1; // making this a comment does not help
    return 0;
}

Why do I get a redefinition error for my attempt to define the variable in a separate code file?

NOTE:
I am using visual studio 2015 Target Platform set to version 8.1
and Platform toolset set to v140.

  • Remove From My Forums
  • Question

  • Hello,

    I added my header file in MyProject.cpp as

    #include "MyProject.h"

    But when I go to add my int definition into MyProject.h

    Visual Studio does not compile and shows:

    Error  1	error C2086: 'int users' : redefinition

    In MyProject.cpp, variable users is declared as:

    int users = 245;

    So why I am getting this error and how can I fix it?

    Strangely this issue only happens for int variables?
    Function
    definitions do not create any issue in header file for compilation?

    Cheers

Answers

  • Do like this

    MyProject.h file
    
    #pragma once
    
    extern int users;  // declaration
    
    wchar_t *subStr(wchar_t *string, int position, int length);
    
    MyProject.cpp file
    
    int users = 1;   // definition
    
    wchar_t *subStr(wchar_t *string, int position, int length)
    {
      return string + position; // or other definition
    }
    

    Only put declarations in header files, not definitions.


    David Wilkinson | Visual C++ MVP

    • Marked as answer by

      Tuesday, March 22, 2016 9:51 AM

  • Remove From My Forums
  • Question

  • Hello,

    I added my header file in MyProject.cpp as

    #include "MyProject.h"

    But when I go to add my int definition into MyProject.h

    Visual Studio does not compile and shows:

    Error  1	error C2086: 'int users' : redefinition

    In MyProject.cpp, variable users is declared as:

    int users = 245;

    So why I am getting this error and how can I fix it?

    Strangely this issue only happens for int variables?
    Function
    definitions do not create any issue in header file for compilation?

    Cheers

Answers

  • Do like this

    MyProject.h file
    
    #pragma once
    
    extern int users;  // declaration
    
    wchar_t *subStr(wchar_t *string, int position, int length);
    
    MyProject.cpp file
    
    int users = 1;   // definition
    
    wchar_t *subStr(wchar_t *string, int position, int length)
    {
      return string + position; // or other definition
    }
    

    Only put declarations in header files, not definitions.


    David Wilkinson | Visual C++ MVP

    • Marked as answer by

      Tuesday, March 22, 2016 9:51 AM

  • Remove From My Forums
  • Question

  • Hi,

    I have put the following into my .h file.
    namespace MySpace
             {
                  bool started;
                  void Draw_screen(Form ^my_form);
                  . . .
             }

    As long as I only include functions it compiles fine.  But as soon as I try to put a variable into the definition I get errors
     error C2086: ‘bool MySpace::started’ : redefinition
     see declaration of ‘MySpace::started

    I am using Studio 2008 and it is a CLR form/application I am using.
    Since I am not even using the new variable at this stage I do not see why I can’t define it.

    Tks Zach.

Answers

  • Hi,

    This was solved, as the result of another thread.
    I had cyclic/recursive includes .    
    What I needed was forward declarations;

    eg

    Try like this

    // my_code.h

    namespace my_space
    {
       ref class Form1;  // forward declaration
    }

    namespace game_space
    {
      int var1;
    }

    // my_code.cpp

    #include «Form1.h»
    #include «my_code.h»

    //namespace gamespace implementation

    • Marked as answer by

      Monday, January 5, 2009 11:08 PM

Понравилась статья? Поделить с друзьями:
  • 210670 ошибка опель астра h расшифровка
  • 2106 ошибка газель 405 евро 3 как
  • 2105 ошибка лада икс рей
  • 2105 ошибка ваз веста
  • 210370 ошибка опель астра h