nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 17 Nov 2017 20:55



Reply to topic  [ 5 posts ] 
Перегруженные функции в C++ 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos объясни популярно про Перегруженные функции в C++?

Раньше я сам разбирался в этом вопросе, а сейчас что-то из головы выветрилось...
Какая-то там "заподляна" с возвратом что-ли была...

_________________
iLavr


25 Feb 2015 17:24
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15662
Location: Colorado
Reply with quote
Post 
Имеется ввиду вот это?

https://ru.wikipedia.org/wiki/%D0%9F%D0 ... 0%B8%D0%B9

Просто разные функции с одним и тем же именем - в Сях это невозможно, а в Плюсах - это одна из основных фич...

_________________
:eugeek: https://twitter.com/Shaos1973


25 Feb 2015 17:52
Profile WWW
Junior
User avatar

Joined: 03 Feb 2016 08:00
Posts: 1
Reply with quote
Наборы параметров перегруженных функций могут отличаться порядком следования, количеством, типом. Перегрузка функций нужна для того, чтобы избежать дублирования имён функций, выполняющих сходные действия, но с различной программной логикой.

_________________
Ведущий поставщик программных обеспечений - http://ru.intechcore.com/


03 Feb 2016 08:06
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
Напишу сюда, чтобы не открывать новую тему...

Решил я перекомпилировать исходники Pom1 - Apple-1 emulator чтобы избыавиться от вызова
MSVCRT100.DLL (я так уже делал с z80.dll), но случилась непонятная мне трабла... :-?

Pom1 - Apple-1 emulator использует SDL.dll, а значит у меня есть заголовочный
файл SDL.h и куча других заголовочных файлов типа SDL_Хххх.h , где объявлены
все функции SDL.dll.

При компиляции VC зачем-то "декорирует" имена этих функций префиксом "_", а потом сам же их
и не находит... :osad:
Quote:
Linking...
main.obj : error LNK2001: unresolved external symbol _SDL_ShowCursor
keyboard.obj : error LNK2001: unresolved external symbol _SDL_ShowCursor
main.obj : error LNK2001: unresolved external symbol _SDL_EnableUNICODE
main.obj : error LNK2001: unresolved external symbol _SDL_EnableKeyRepeat
main.obj : error LNK2001: unresolved external symbol _SDL_SetVideoMode
keyboard.obj : error LNK2001: unresolved external symbol _SDL_SetVideoMode
options.obj : error LNK2001: unresolved external symbol _SDL_SetVideoMode
main.obj : error LNK2001: unresolved external symbol _SDL_WM_SetCaption
main.obj : error LNK2001: unresolved external symbol _SDL_Quit
main.obj : error LNK2001: unresolved external symbol _SDL_Init
keyboard.obj : error LNK2001: unresolved external symbol _SDL_PollEvent
options.obj : error LNK2001: unresolved external symbol _SDL_PollEvent
m6502.obj : error LNK2001: unresolved external symbol _SDL_CreateThread
m6502.obj : error LNK2001: unresolved external symbol _SDL_GetTicks
screen.obj : error LNK2001: unresolved external symbol _SDL_GetTicks
m6502.obj : error LNK2001: unresolved external symbol _SDL_Delay
screen.obj : error LNK2001: unresolved external symbol _SDL_Delay
m6502.obj : error LNK2001: unresolved external symbol _SDL_WaitThread
screen.obj : error LNK2001: unresolved external symbol _SDL_UpdateRect
options.obj : error LNK2001: unresolved external symbol _SDL_UpdateRect
screen.obj : error LNK2001: unresolved external symbol _SDL_FillRect
options.obj : error LNK2001: unresolved external symbol _SDL_FillRect
screen.obj : error LNK2001: unresolved external symbol _SDL_MapRGB
screen.obj : error LNK2001: unresolved external symbol _SDL_GetVideoSurface
options.obj : error LNK2001: unresolved external symbol _SDL_GetVideoSurface
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/POM1.exe : fatal error LNK1120: 17 unresolved externals
Error executing link.exe.


Я так подозреваю, что проблема похожа на обсуждаемую вот здесь:
http://forum.developing.ru/archive/index.php/t-10541.html

Но вот побороть это пока никак не смог... :-?

_________________
iLavr


22 Aug 2017 21:13
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15662
Location: Colorado
Reply with quote
С-компилятор компилирует в _name, а C++ компилятор в какие-то свои более запутанные крокозябры

если надо чтобы компилятор C++ скомпилировал в _name, то надо чтобы в H-файле у объявлений функций стоял модификатор "C"

P.S. в данном конкретном случае скорее всего либа стыковочная не прилинкована, которая потом будет цеплять SDL.dll

_________________
:eugeek: https://twitter.com/Shaos1973


04 Nov 2017 20:05
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 5 posts ] 

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.