Sujet : Re: Word For Today: “Uglification”
De : 433-929-6894 (at) *nospam* kylheku.com (Kaz Kylheku)
Groupes : comp.lang.cDate : 12. Mar 2024, 20:42:05
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <20240312113558.815@kylheku.com>
References : 1 2 3 4 5 6 7 8
User-Agent : slrn/pre1.0.4-9 (Linux)
On 2024-03-12, bart <
bc@freeuk.com> wrote:
On 12/03/2024 14:46, Anton Shepelev wrote:
David Brown:
The limited support for avoiding name clashes in C (user-
level C, outside of the implementation internals) is
certainly something that he (or others) /could/ complain
about. It is a well-known issue, and it's a shame that
the C standards committee have never dealt with it. I
don't see why the language could not adopt a simple
"namespace" solution that would hugely simplify avoiding
identifier clashes. (It wouldn't help for macros, but we
have inline functions to handle many cases.)
My hypothetical solution is to have a single function
returning a struct with pointers to all the public functions
of a module.
What stops that function name clashing with the single function exported
from other people's modules?
There are multiple possible answers here.
One is that even if such functions have to be uniquely named, that is a
lesser burden than all API functions having to be uniquely named.
The probability of a clash is reduced, and at most one function
has to be renamed if it occurs.
There are ways that this single function can have the same name
in every component.
For instance, under Microsoft COM, COM DLLs provide well-known
functions like DllGetClassObject, DllRegisterServer and
DllUnregisterServer.
These don't clash since they are in different DLLs.
An appliation queries for the COM object using its class ID,
which is a GUID. That must be unique. DllRegisterServer registers
it in the registry.
Variations on this theme can be done in any system that has dynamic
libraries or loadable modules.
-- TXR Programming Language: http://nongnu.org/txrCygnal: Cygwin Native Application Library: http://kylheku.com/cygnalMastodon: @Kazinator@mstdn.ca