git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Rationale behind 'extern' on protypes in .h files

From
Jed Brown <jed@59a2.org>
Date
Dec 22, 2013, 18:26 UTC
Message-ID
<87eh54spw3.fsf@jedbrown.org>
In-Reply-To
<52B71D24.4000207@googlemail.com>
Stefan Beller <stefanbeller@googlemail.com> writes:
> From my understanding there is no
> difference for functions declarations being set to extern or not,
> because extern is the default on functions.

There is a difference for shared libraries if you would like to control which symbols are exported. With gcc, for example, you might compile using -fvisibility=hidden. Any functions explicitly declared with extern, bearing __attribute__((visibility("default")), or using visibility pragmas will be exported (similar to __declspec(dllexport) on Windows). Other functions will be internal to the shared library so you don't have to worry about callers depending on those symbols and performance can be a bit better by skipping the PLT and avoiding symbol relocations at load time. See Drepper's guide for more.

http://www.akkadia.org/drepper/dsohowto.pdf
Previous: Stefan BellerNext: Ravi Shekhar Jethani
Message 3 of 5 in “Rationale behind 'extern' on protypes in .h files”
  1. Ravi Shekhar JethaniDec 22, 2013
  2. Stefan BellerDec 22, 2013
  3. Jed BrownDec 22, 2013
  4. Ravi Shekhar JethaniDec 23, 2013
  5. Jed BrownDec 23, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.