| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Как узнать определена ли функция |
| Автор: HappyLife 22.7.2008, 10:41 | ||
| Как, попросить компилятор узнать определена ли функция или нет? Компилятор, насколько я понял, это проверяет, лишь в том случае, если в коде функция где-то вызывается. Но как быть с ДЛЛ? Допустим я пишу
А определение функции нигде не пишу. Компиляция проходит на ура. Но ошибки конечно возникают когда вызываешь, эту функцию из другой DLL или исполняемого файла. Так вот, как бы мне повесить проверку, на то есть ли определение или нет. Единственный вариант мне кажется возможным, это вызвать для теста где-нибудь, эту функцию в самой родительской DLL, но рационально ли это? |
| Автор: HappyLife 22.7.2008, 17:03 |
| Я очень рад. Но разве нет никаких макросов, сказать линковщику это проверить? |
| Автор: SABROG 22.7.2008, 17:18 | ||||
Это прототип, интерфейс, чтобы компилятор мог тебя за рукав дернуть, если ты будеш вызывать функцию с другими типами.
Компилятор создает объектные файлы (.o), которые используются линковщиком. На этапе линковки ты и так узнаеш нашел он адрес нужной функции в одном из модулей или нет, о чем и получишь честно unresolved external. В общем это не задача компилятора делать такую проверку, тем более, что она не всегда может быть выполнена, когда отстуствуют полные исходники других модулей, а есть лишь собранные библиотеки. |
| Автор: mes 22.7.2008, 18:41 |
| если речь идет именно о dll , то там позднее связывание функций в режиме рантайма ни компилятор ни линкер к ьтому отношению не имеет за случаи ранего связывания отвечает линкер - и если он не найдет подходяшего то обязательно сообшит )) |
| Автор: Peter 2.8.2008, 18:51 |
| Функция GetProcAddress вернет NULL, если в твоей DLL не окажется запрошенной функции. |