Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #138662

Re: Big integers

From David Brown <david.brown@hesbynett.no>
Newsgroups comp.lang.c
Subject Re: Big integers
Date 2018-12-11 14:35 +0100
Organization A noiseless patient Spider
Message-ID <puoef7$kdi$1@dont-email.me> (permalink)
References (3 earlier) <87o9a06lxq.fsf@bsb.me.uk> <d74d25f4-17a3-49f7-a282-731052938415@googlegroups.com> <punpu7$vfo$1@dont-email.me> <87h8fkuxeg.fsf@bsb.me.uk> <75fcb94b-8dbe-4168-999b-981857ae54c5@googlegroups.com>

Show all headers | View raw


On 11/12/18 13:36, Malcolm McLean wrote:
> On Tuesday, December 11, 2018 at 11:16:00 AM UTC, Ben Bacarisse wrote:
>> David Brown <david.brown@hesbynett.no> writes:
>>
>>> On 11/12/18 08:19, luser droog wrote:
>>>> On Wednesday, December 5, 2018 at 9:19:24 AM UTC-6, Ben Bacarisse wrote:
>>>>
>>>>> Some libraries or modules even allow the prefix to be changed so that
>>>>> name clashes can always be avoided, but this is only practical when the
>>>>> code is not shared.
>>>>
>>>> Wow! How do you do that?
>>
>> The simplest way is to declare everything using a macro
>>
>>   #define MAKE_NAME(n) mylib ## _ ## n
>>
>> which the user of the code edits.  It can be made a bit more automatic
>> (so that it can be done without an edit) but it's dubious if it's worth
>> the effort because it only works in rather limited situations and is
>> needed in even fewer.

I would guess it is common to make the "mylib" part a macro too, defined
from the command line.  So if you have have a library for big integers,
you might have something like:

#ifndef BI_PREFIX
#error You need to specify BI_PREFIX on the command line!
#endif

#define BI_(n) BI_PREFIX ## _ ## n

typedef struct { ... } BI_(bigint);

extern int BI_(add)(BI_(bigint) * x,
	const BI_(bigint) * a, cont BI_(bigint) * b);


and so on.

Then you compile with "gcc -DBI_PREFIX=bi" or something similar.  That
way you don't need to change the code at all to get a different prefix.

Yes, it's a little ugly - but you'd only use it if you really needed it,
and it's only the external names that need this.  In the implementation,
you can use normal static names.

>>
>>> Macros, and stringification, I expect.
>>
>> Yes, though I would not use the term "stringification" because suggests
>> using # which makes a string token from a macro argument.
>>
> So C namespaces are better than C++.
> Changing a C++ namespace name requires going through the code and changing
> every "namespace" and "using namespace" declaration.
> 

If you need the same flexibility in a C++ program, you can use macros
for the namespace names too.

But since you can use "using" for namespaces in C++, you can use longer
names without the ugliness and verbosity of long prefixes in C names,
and thus you have little chance of conflict.  A prefix of "bi_" in C has
a serious risk of conflicting with other libraries or code - a C++
namespace of "barts_bigint_lib" is more likely to be unique.

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Big integers Bart <bc@freeuk.com> - 2018-12-04 12:17 +0000
  Re: Big integers fir <profesor.fir@gmail.com> - 2018-12-04 05:58 -0800
    Re: Big integers Chad <cdalten@gmail.com> - 2018-12-04 08:22 -0800
      Re: Big integers Bart <bc@freeuk.com> - 2018-12-04 17:04 +0000
        Re: Big integers scott@slp53.sl.home (Scott Lurndal) - 2018-12-04 17:19 +0000
  Re: Big integers Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2018-12-04 08:38 -0800
    Re: Big integers Bart <bc@freeuk.com> - 2018-12-04 17:35 +0000
      Re: Big integers Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-12-04 18:13 +0000
        Re: Big integers "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-04 10:50 -0800
        Re: Big integers Rosario19 <Ros@invalid.invalid> - 2018-12-06 17:56 +0100
      Re: Big integers Thiago Adams <thiago.adams@gmail.com> - 2018-12-04 10:22 -0800
        Re: Big integers Eli the Bearded <*@eli.users.panix.com> - 2018-12-04 18:58 +0000
          Re: Big integers Thiago Adams <thiago.adams@gmail.com> - 2018-12-04 11:32 -0800
            Re: Big integers Eli the Bearded <*@eli.users.panix.com> - 2018-12-04 22:45 +0000
              Re: Big integers jameskuyper@alumni.caltech.edu - 2018-12-04 14:57 -0800
          Re: Big integers jameskuyper@alumni.caltech.edu - 2018-12-04 12:14 -0800
          Re: Big integers chris.m.thomasson.1@gmail.com - 2018-12-04 16:58 -0800
            Re: Big integers Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-12-05 03:14 +0000
              Re: Big integers "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-05 14:27 -0800
            Re: Big integers Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2018-12-04 20:03 -0500
              Re: Big integers "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-05 14:25 -0800
      Re: Big integers jacob navia <jacob@jacob.remcomp.fr> - 2018-12-04 23:45 +0100
        Re: Big integers Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-12-04 23:29 +0000
        Re: Big integers Bart <bc@freeuk.com> - 2018-12-05 00:30 +0000
          Re: Big integers "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-05 14:28 -0800
        Re: Big integers Jens Stuckelberger <Jens_Stuckelberger@nowhere.net> - 2018-12-05 17:50 +0000
          Re: Big integers jacobnavia <jacob@jacob.remcomp.fr> - 2018-12-05 20:03 +0100
        Re: Big integers Keith Thompson <kst-u@mib.org> - 2018-12-05 13:46 -0800
          Re: Big integers jacobnavia <jacob@jacob.remcomp.fr> - 2018-12-06 06:41 +0100
            Re: Big integers Keith Thompson <kst-u@mib.org> - 2018-12-05 22:40 -0800
  Re: Big integers "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-04 09:08 -0800
    Re: Big integers Bart <bc@freeuk.com> - 2018-12-04 19:41 +0000
      Re: Big integers "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-04 12:00 -0800
    Re: Big integers Bart <bc@freeuk.com> - 2018-12-08 11:28 +0000
  Re: Big integers Ian Collins <ian-news@hotmail.com> - 2018-12-05 15:19 +1300
    Re: Big integers Bart <bc@freeuk.com> - 2018-12-05 11:58 +0000
      Re: Big integers David Brown <david.brown@hesbynett.no> - 2018-12-05 14:35 +0100
        Re: Big integers Bart <bc@freeuk.com> - 2018-12-05 14:35 +0000
          Re: Big integers Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2018-12-05 07:39 -0800
            Re: Big integers Thiago Adams <thiago.adams@gmail.com> - 2018-12-05 07:45 -0800
              Re: Big integers Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-12-05 17:51 +0000
                Re: Big integers David Brown <david.brown@hesbynett.no> - 2018-12-05 22:19 +0100
              Re: Big integers "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-05 14:55 -0800
                Re: Big integers jameskuyper@alumni.caltech.edu - 2018-12-05 15:19 -0800
                Re: Big integers "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-05 16:13 -0800
                Re: Big integers David Brown <david.brown@hesbynett.no> - 2018-12-06 09:35 +0100
                Re: Big integers "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-07 14:26 -0800
                Re: Big integers "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-07 19:56 -0800
                Re: Big integers James Kuyper <jameskuyper@alumni.caltech.edu> - 2018-12-09 12:01 -0500
                Re: Big integers "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-10 14:47 -0800
                Re: Big integers scott@slp53.sl.home (Scott Lurndal) - 2018-12-11 00:50 +0000
                Re: Big integers "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-10 17:37 -0800
                Re: Big integers "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-14 21:18 -0800
          Re: Big integers Thiago Adams <thiago.adams@gmail.com> - 2018-12-05 07:57 -0800
          Re: Big integers Bart <bc@freeuk.com> - 2018-12-05 15:59 +0000
            Re: Big integers Bart <bc@freeuk.com> - 2018-12-05 22:59 +0000
              Re: Big integers jameskuyper@alumni.caltech.edu - 2018-12-05 15:31 -0800
                Re: Big integers Robert Wessel <robertwessel2@yahoo.com> - 2018-12-05 20:03 -0600
              Re: Big integers scott@slp53.sl.home (Scott Lurndal) - 2018-12-05 23:42 +0000
                Re: Big integers James Kuyper <jameskuyper@alumni.caltech.edu> - 2018-12-05 20:15 -0500
              Re: Big integers Ike Naar <ike@iceland.freeshell.org> - 2018-12-10 07:26 +0000
                Re: Big integers Bart <bc@freeuk.com> - 2018-12-10 18:38 +0000
                Re: Big integers scott@slp53.sl.home (Scott Lurndal) - 2018-12-10 19:10 +0000
                Re: Big integers Bart <bc@freeuk.com> - 2018-12-10 21:23 +0000
                Re: Big integers Ike Naar <ike@iceland.freeshell.org> - 2018-12-10 22:47 +0000
          Re: Big integers David Brown <david.brown@hesbynett.no> - 2018-12-05 22:15 +0100
        Re: Big integers Bart <bc@freeuk.com> - 2018-12-06 13:43 +0000
          Re: Big integers Thiago Adams <thiago.adams@gmail.com> - 2018-12-06 07:50 -0800
      Re: Big integers Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-12-05 15:19 +0000
        Re: Big integers luser droog <luser.droog@gmail.com> - 2018-12-10 23:19 -0800
          Re: Big integers David Brown <david.brown@hesbynett.no> - 2018-12-11 08:45 +0100
            Re: Big integers Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-12-11 11:15 +0000
              Re: Big integers Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2018-12-11 04:36 -0800
                Re: Big integers David Brown <david.brown@hesbynett.no> - 2018-12-11 14:35 +0100
              Re: Modules again (was: Big integers) Bart <bc@freeuk.com> - 2018-12-11 12:53 +0000
                Re: Modules again David Brown <david.brown@hesbynett.no> - 2018-12-11 14:45 +0100
                Re: Modules again Bart <bc@freeuk.com> - 2018-12-11 16:08 +0000
                Re: Modules again David Brown <david.brown@hesbynett.no> - 2018-12-11 21:37 +0100
                Re: Modules again Thiago Adams <thiago.adams@gmail.com> - 2018-12-11 08:59 -0800
                Re: Modules again Bart <bc@freeuk.com> - 2018-12-11 17:49 +0000
                Re: Modules again David Brown <david.brown@hesbynett.no> - 2018-12-11 21:44 +0100
                Re: Modules again scott@slp53.sl.home (Scott Lurndal) - 2018-12-11 18:02 +0000
                Re: Modules again Thiago Adams <thiago.adams@gmail.com> - 2018-12-11 10:10 -0800
                Re: Modules again scott@slp53.sl.home (Scott Lurndal) - 2018-12-11 18:54 +0000
                Re: Modules again Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2018-12-11 13:14 -0500
                Re: Modules again scott@slp53.sl.home (Scott Lurndal) - 2018-12-11 18:54 +0000
                Re: Modules again Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2018-12-11 14:42 -0500
                Re: Modules again David Brown <david.brown@hesbynett.no> - 2018-12-11 21:54 +0100
                Re: Modules again Keith Thompson <kst-u@mib.org> - 2018-12-11 14:53 -0800
                Re: Modules again David Brown <david.brown@hesbynett.no> - 2018-12-12 08:24 +0100
                Re: Modules again David Brown <david.brown@hesbynett.no> - 2018-12-11 21:51 +0100
                Re: Modules again scott@slp53.sl.home (Scott Lurndal) - 2018-12-11 23:24 +0000
                Re: Modules again Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2018-12-11 18:44 -0500
                Re: Modules again Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2018-12-11 18:45 -0500
                Re: Modules again Jorgen Grahn <grahn+nntp@snipabacken.se> - 2018-12-12 06:39 +0000
                Re: Modules again James Kuyper <jameskuyper@alumni.caltech.edu> - 2018-12-12 07:59 -0500
                Re: Modules again mark.bluemel@gmail.com - 2018-12-12 05:43 -0800
                Re: Modules again scott@slp53.sl.home (Scott Lurndal) - 2018-12-12 14:20 +0000
                Re: Modules again David Brown <david.brown@hesbynett.no> - 2018-12-12 17:10 +0100
                Re: Modules again James Kuyper <jameskuyper@alumni.caltech.edu> - 2018-12-12 13:39 -0800
                Re: Modules again scott@slp53.sl.home (Scott Lurndal) - 2018-12-12 14:19 +0000
                Re: Modules again Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2018-12-12 10:28 -0500
      Re: Big integers Ian Collins <ian-news@hotmail.com> - 2018-12-06 08:10 +1300
        Re: Big integers Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-12-05 20:57 +0000
          Re: Big integers Ian Collins <ian-news@hotmail.com> - 2018-12-06 10:16 +1300
            Re: Big integers Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-12-05 23:15 +0000
              Re: Big integers scott@slp53.sl.home (Scott Lurndal) - 2018-12-05 23:44 +0000
  Re: Big integers Robert Wessel <robertwessel2@yahoo.com> - 2018-12-05 02:51 -0600
  Re: Big integers antispam@math.uni.wroc.pl - 2018-12-07 15:26 +0000
    Re: Big integers Bart <bc@freeuk.com> - 2018-12-07 16:27 +0000
      Re: Big integers scott@slp53.sl.home (Scott Lurndal) - 2018-12-07 16:36 +0000
        Re: Big integers Bart <bc@freeuk.com> - 2018-12-07 17:01 +0000
      Re: Big integers Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-12-07 17:55 +0000
      Re: Big integers antispam@math.uni.wroc.pl - 2018-12-07 19:26 +0000
        Re: Big integers Bart <bc@freeuk.com> - 2018-12-07 21:39 +0000
          Re: Big integers Ian Collins <ian-news@hotmail.com> - 2018-12-08 10:51 +1300
  Re: Big integers Anton Shepelev <anton.txt@gmail.com> - 2018-12-08 00:43 +0300
    Re: Big integers Bart <bc@freeuk.com> - 2018-12-08 01:08 +0000
    Re: Big integers David Brown <david.brown@hesbynett.no> - 2018-12-08 15:13 +0100
      Re: Big integers David Brown <david.brown@hesbynett.no> - 2018-12-08 15:15 +0100
        Re: Big integers Bart <bc@freeuk.com> - 2018-12-08 14:48 +0000
          Re: Big integers Thiago Adams <thiago.adams@gmail.com> - 2018-12-10 05:10 -0800
            Re: Big integers Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2018-12-10 05:22 -0800
              Re: Big integers David Brown <david.brown@hesbynett.no> - 2018-12-10 15:27 +0100
                Re: Big integers scott@slp53.sl.home (Scott Lurndal) - 2018-12-10 15:59 +0000
                Re: Big integers antispam@math.uni.wroc.pl - 2018-12-11 21:14 +0000
            Re: Big integers Bart <bc@freeuk.com> - 2018-12-10 14:56 +0000
              Re: Big integers Ike Naar <ike@iceland.freeshell.org> - 2018-12-10 17:46 +0000
                Re: Big integers Bart <bc@freeuk.com> - 2018-12-10 18:24 +0000
                Re: Big integers Thiago Adams <thiago.adams@gmail.com> - 2018-12-10 11:12 -0800
                Re: Big integers Thiago Adams <thiago.adams@gmail.com> - 2018-12-10 11:23 -0800
                Re: Big integers Bart <bc@freeuk.com> - 2018-12-10 21:44 +0000
                Re: Big integers Thiago Adams <thiago.adams@gmail.com> - 2018-12-11 10:20 -0800
                Re: Big integers "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-11 13:15 -0800
      Re: Big integers Keith Thompson <kst-u@mib.org> - 2018-12-08 12:14 -0800
        Re: Big integers David Brown <david.brown@hesbynett.no> - 2018-12-09 13:31 +0100
      Re: Big integers "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-08 15:52 -0800
  Re: Big integers Bart <bc@freeuk.com> - 2018-12-16 19:29 +0000
  Re: Big integers "Tristan B. Kildaire" <deavmi@disroot.org> - 2018-12-25 12:59 +0000
    Re: Big integers Bart <bc@freeuk.com> - 2018-12-25 15:54 +0000

csiph-web