Форум программистов, компьютерный форум CyberForum.ru

Линковщик студии суёт нос не туда куда надо - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Брутфорс WPA2 http://www.cyberforum.ru/cpp-beginners/thread725589.html
По-пьяни поменял пароль от wi-fi, гуглил, или посылает на Linux-системы, либо на CommView и Aircrack-ng. Сетевой адаптер не тащит эти проги. Есть амбиции написать прожку по бруту. Помню частично пароль, так что взлом будет небольшой, надеюсь
C++ Посчитать выражение sqrt((2)+sqrt((4)+..+sqrt(2n))) http://www.cyberforum.ru/cpp-beginners/thread725585.html
Дано целое положительное n. Вычислить. C++
Извините за столь позднее обращение, но как это вообще решать?как!? Правила
C++ Написать функцию, кторая определяет символ, наиболее частый в строке
Заранее спасибо.
C++ Идентификатор не найден http://www.cyberforum.ru/cpp-beginners/thread725575.html
#include <iostream> #include <cstring> #include <new> #include"PRATT9.h" int main(){ chaff *ps; ps = new(buffer)chaff; strcopy (ps->dross,"qqqqqqqqqqqqqqqqqqq");\\выдает здесь идентификатор не найден return 0;} Помогите пожалуйста.
C++ Самый простой односвязный список Здравствуйте. Найдите ошибки или помогите полностью написать самый простой односвязный список. Без классов, без шаблонов и без функций. #include "stdafx.h" #include "iostream" using namespace std; struct list { long val; list *next; подробнее

Показать сообщение отдельно
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,508
10.12.2012, 00:34  [ТС]     Линковщик студии суёт нос не туда куда надо
Kuzia domovenok, а причём тут язык, ты думаешь что в gcc ошибки линковщика будут информативнее? Она же один фиг создаёт временные обжекты которые обзывает по своему (имя функции + какой-то псевдо случайный набор символов), ну а когда у неё потом что-то не сходится то выбрасывает имена этих уже "переработанных" функций в обжектах которые она и не смогла слинковать, gcc делает то же самое и ругается при ошибках линковки похоже. По обрывкам слов можно понять на какие функции она ругается что она два раза включила.

Цитата Сообщение от kravam Посмотреть сообщение
Я конечно небольшой специалист во всём этом, но я все глаза просмотрел и не увидел подтверждения того, что ты функцию определил один раз, как ты сказал.
Содержимое Colors.h (если чем-то поможет). Содержимое остального не буду приводить так как там больно много всего, толку особо не будет, обычный class и обычный мейн, только большой
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#ifndef COLORS_H
#define COLORS_H
 
#include<windows.h>
 
//коды цветов
enum ConsoleColor
{
        Black         = 0,
        Blue          = 1,
        Green         = 2,
        Cyan          = 3,
        Red           = 4,
        Magenta       = 5,
        Brown         = 6,
        LightGray     = 7,
        DarkGray      = 8,
        LightBlue     = 9,
        LightGreen    = 10,
        LightCyan     = 11,
        LightRed      = 12,
        LightMagenta  = 13,
        Yellow        = 14,
        White         = 15
};
 
//возможность установки цвета зная заранее его код
void SetColor(ConsoleColor text, ConsoleColor background = White)
{
    static HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}
 
//доп. возможность установкци цвета. Её отличие в том что функция
//выбирает цвета максимально отличающиеся для номеров что рядом (в отличии от распред. цветов в табличке)
void SetDifColors(int nColor)
{
    ConsoleColor color;
    switch(nColor)
    {
    case 0:
        color = Black;
    case 1:
        color = Red;
        break;
    case 2:
        color = Green;
        break;
    case 3:
        color = Blue;
        break;
    case 4:
        color = Yellow;
        break;
    case 5:
        color = LightGray;
        break;
    case 6:
        color = Black;
        break;
    case 7:
        color = Cyan;
        break;
    case 8:
        color = LightRed;
        break;
    case 9:
        color = LightCyan;
        break;
    case 10:
        color = Brown;
        break;
    case 11:
        color = LightGreen;
        break;
    case 12:
        color = LightBlue;
        break;
    case 13:
        color = DarkGray;
        break;
    case 14:
        color = Magenta;
        break;
    case 15:
        color = White;
        break;
    default:
        color = Black;
        break;
    }
    SetColor(color);
}
#endif
Меня больше удивляет почему она начинает два раза в list их включать. Это получается что у меня при выносе кода из list.h в list.cpp часть кода использующего colors.h находится в list.h, а часть в list.cpp после чего линковщик суёт нос не туда куда надо и подсовывает в list.obj определение colors.h для list.h, а потом засовывает определение colors.h для list.cpp. Другого объяснения я не нахожу. Вопрос в том КАКОГО ФИГА сунуть colors.h в list.cpp когда я не прошу этого (в list.cpp есть лишь include list.h), что за медвежья услуга

Добавлено через 4 минуты
Сделал глупое предположение что static элемент в colors.h сбивал линковщик, но нет, если убрать static у HANDLE hStdOut то ничего не поменяется
 
Текущее время: 23:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru