Re: Why PGDLLIMPORT is needed

Поиск
Список
Период
Сортировка
От Craig Ringer
Тема Re: Why PGDLLIMPORT is needed
Дата
Msg-id 508E4121.10804@ringerc.id.au
обсуждение исходный текст
Ответ на Why PGDLLIMPORT is needed  (高健 <luckyjackgao@gmail.com>)
Ответы Re: Why PGDLLIMPORT is needed  (Bruce Momjian <bruce@momjian.us>)
Список pgsql-general
On 10/29/2012 02:05 PM, 高健 wrote:
> On /src/include/storage/proc.h:
>
> I saw the following line:
>
> extern PGDLLIMPORT PGPROC *MyProc;
>
> I want to know why PGDLLIMPORT is used here?
>
> Does it mean: exten PGPROC *MyProc;  right?

What platform are you working on?

On Windows it's required to allow the static linker to generate the
correct symbol tables and the runtime/dynamic linker to correctly link
binaries. See:

http://support.microsoft.com/kb/132044
http://msdn.microsoft.com/en-us/library/8fskxacy(v=vs.80).aspx
http://msdn.microsoft.com/en-us/library/a90k134d(v=vs.80).aspx

For other platforms the same macros can be used for symbol visibility
filtering, but are usually set to evaluate to nothing so they have no
effect.

"extern" is always implicit for a prototype in a header, so while that
declaration does mean "extern PGPROC *MyPRoc;" that's nothing to do with
the PGDLLIMPORT macro.

--
Craig Ringer


В списке pgsql-general по дате отправления:

Предыдущее
От: Seref Arikan
Дата:
Сообщение: Access to postgresql query optimizer output
Следующее
От: Craig Ringer
Дата:
Сообщение: Re: Access to postgresql query optimizer output