Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

h и cpp

390
25 октября 2005 года
lexus
143 / / 13.04.2004
Почему, когда я объявляю
const* char
*SLineTooLong = "Слишком длинная строка",
*SInvalidString = "Неверная строковая константа",
*SIdentifierExpected = "Ожидается идентификатор";
в h файле мне компилятор выдает список ошибок типа:
MyKurs error LNK2005: "char * SCharExpected" (?SCharExpected@@3PADA) already defined in Convert.obj
А если то же самое сделать в срр, все ОК?
276
26 октября 2005 года
Rebbit
1.1K / / 01.08.2005
Цитата:
Originally posted by lexus
Почему, когда я объявляю
const* char
*SLineTooLong = "Слишком длинная строка",
*SInvalidString = "Неверная строковая константа",
*SIdentifierExpected = "Ожидается идентификатор";
в h файле мне компилятор выдает список ошибок типа:
MyKurs error LNK2005: "char * SCharExpected" (?SCharExpected@@3PADA) already defined in Convert.obj
А если то же самое сделать в срр, все ОК?



Ты не обявляеш, а определяеш. А ето разные вещи. Обявлять можно много раз, а определять один. Так как хидер влючается в несколько модулей то получается несколько определений одного и того же.
Оставь все ето в cpp, а в h обяви как extern

390
26 октября 2005 года
lexus
143 / / 13.04.2004
Цитата:
Originally posted by Rebbit
Ты не обявляеш, а определяеш. А ето разные вещи. Обявлять можно много раз, а определять один. Так как хидер влючается в несколько модулей то получается несколько определений одного и того же.
Оставь все ето в cpp, а в h обяви как extern


Но у меня хедер используется только 1 раз, плюс включил директиву #pragma once

292
26 октября 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by lexus
Но у меня хедер используется только 1 раз, плюс включил директиву #pragma once


пишеш так
static char SLineTooLong[] = "Слишком длинная строка";

и все ОК

390
26 октября 2005 года
lexus
143 / / 13.04.2004
Цитата:
Originally posted by Matush
пишеш так
static char SLineTooLong[] = "Слишком длинная строка";

и все ОК


спасибо

398
26 октября 2005 года
Alexandoros
630 / / 21.10.2005
Все ок будет для константной строки. Если изменить сроку описаную со статиком, то уже в следующем файле она будет НЕ ИЗМЕНЕННОЙ. В каждый файл .срр будет включена СВОЯ копия строки. Как показали ранее, для extern переменных нуна юзать определение в cpp файле.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог