реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Warning[w6]: Type conflict for external/entry ..., Подскажите, в чем дело
Непомнящий Евген...
сообщение Mar 17 2008, 06:54
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Варнинг линкера:
Warning[w6]: Type conflict for external/entry "__near_array_new_prefix_size", in module paramAccessor against external/entry in module ?vec_newdel; types have different type attributes

В хидере, включенном в paramAccessor.cpp, сделаны объявления:
Код
void* operator new(size_t sz, TStackMem *sm);
void* operator new[](size_t sz, TStackMem *sm);

Ругаться начал после добавления operator new[].
TStackMem - мой собственный класс.

Подскажите, в чем причина?

IAR 4.30, eec++, dlib.

Спасибо.
Go to the top of the page
 
+Quote Post
sKWO
сообщение Mar 24 2008, 11:52
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



Цитата(Непомнящий Евгений @ Mar 17 2008, 10:54) *
Варнинг линкера:
Warning[w6]: Type conflict for external/entry "__near_array_new_prefix_size", in module paramAccessor against external/entry in module ?vec_newdel; types have different type attributes
В хидере, включенном в paramAccessor.cpp, сделаны объявления:
Код
void* operator new(size_t sz, TStackMem *sm);
void* operator new[](size_t sz, TStackMem *sm);

Подскажите, в чем причина?


точно не знаю но помоему у Вас эта функция объявлена в хидере, включенном в paramAccessor.cpp и объявления эти отличаются с функцией в paramAccessor.cpp.


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 24 2008, 18:01
Сообщение #3


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Если Вы пытаетесь переопределить стандартные операторы new и new[], то наверное лучше сделать так:
Код
void* operator new(size_t sz);
void* operator new[](size_t sz);

Так Вы сможете выделять память для объектов любого типа, в том числе и Вашего собственного.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Mar 25 2008, 07:07
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(IgorKossak @ Mar 24 2008, 21:01) *
Если Вы пытаетесь переопределить стандартные операторы new и new[], то наверное лучше сделать так:
Код
void* operator new(size_t sz);
void* operator new[](size_t sz);

Так Вы сможете выделять память для объектов любого типа, в том числе и Вашего собственного.

TStackMem - это аллокатор, т.е. объект, который отвечает за выделение памяти. Эта форма оператора new с явным указанием аллокатора, что позволяет иметь несколько разных схем выделения памяти. Используется примерно так:
Код
new (&stack) int[100];
new (&stack) TMyClass();


По теме - сейчас пробую получить минимальный кусок, который приводит к ворнингу, как получится - выложу. Может при этом чего прояснится.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 20:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01369 секунд с 7
ELECTRONIX ©2004-2016