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


Groups > comp.lang.c++ > #86020

Re: To C or not to C++

Path csiph.com!news.mixmin.net!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From Ben Bacarisse <ben.usenet@bsb.me.uk>
Newsgroups comp.lang.c++
Subject Re: To C or not to C++
Date Wed, 24 Aug 2022 11:33:33 +0100
Organization A noiseless patient Spider
Lines 74
Message-ID <87sflmszgi.fsf@bsb.me.uk> (permalink)
References <2868500762@darkrealms.ca> <tcsrs5$tnp$1@gioia.aioe.org> <ygah72lu6nv.fsf@akutech.de> <tcutte$11jl$1@gioia.aioe.org> <tcvnc2$940$1@gioia.aioe.org> <87iln0owgr.fsf@nosuchdomain.example.com> <td52mp$5st$1@gioia.aioe.org> <td5iku$2gl2u$1@dont-email.me> <td5otq$1cko$1@gioia.aioe.org> <td5qbq$2hcc7$1@dont-email.me> <td5qoi$8m0$1@gioia.aioe.org> <87lerte0qb.fsf@nosuchdomain.example.com> <td7reo$10pg$1@gioia.aioe.org> <te4nn4$39989$1@dont-email.me>
MIME-Version 1.0
Content-Type text/plain
Injection-Info reader01.eternal-september.org; posting-host="01f589551d39ad47f8fec28416c86c3c"; logging-data="3471124"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+kFxJysoEHfAhk7itCKxVhjl9Pvm1Tmng="
User-Agent Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux)
Cancel-Lock sha1:BFqsG9WtcgncEa+2FmQnykYukx0= sha1:isPkA0oE1glBqREFLrEUl68jRsc=
X-BSB-Auth 1.212981106c168707f3f3.20220824113333BST.87sflmszgi.fsf@bsb.me.uk
Xref csiph.com comp.lang.c++:86020

Show key headers only | View raw


Paavo Helde <eesnimi@osa.pri.ee> writes:

> 13.08.2022 12:38 Muttley@dastardlyhq.com kirjutas:
>> Perhaps its time someone describes what they mean by idiomatic C++ code.
>> 
>
> Perhaps the most visible difference is in that in proper C most of the
> application level code deals with error checking and resource cleanup,
> whereas in proper C++ most of the application level code implements
> business logic. Example with two resources, one can easily imagine
> more.  A resource might be just a dynamically allocated array.
>
> C:
>
> int foo(int arg1, const char* arg2, X* presult) {
>
>   A* resource1 = NULL;
>   B* resource2 = NULL;
>   int retval;
>
>   if (PrepareResourceA(arg1, arg2, &resource1)!=0) {
>      goto FAILURE;
>   }
>   resource2 = PrepareResourceB(arg1, arg2, resource1);
>   if (!resource2) {
>      goto FAILURE;
>   }
>   if (CombineAB(resource1, resource2, presult)!=0) {
>      goto FAILURE;
>   }
>   // we know that ownership of B has moved over into result:
>   resource2 = NULL;
>   retval = 0; // success
>   goto CLEANUP;
>
> FAILURE:
>   retval = -1;
>   goto CLEANUP;
>
> CLEANUP:
>   if (resource1) {
>     ReleaseResourceA(resource1);
>   }
>   if (resource2) {
>     ReleaseResourceB(resource2);
>   }
>
>   return retval;
> }
>
>
> In C++, where errors are reported via exceptions, and ownership and
> resource cleanup are automatic:
>
> X foo(int arg1, std::string_view arg2) {
>   A resource1 = PrepareResourceA(arg1, arg2);
>   B resource2 = PrepareResourceB(arg1, arg2, resource1);
>   return CombineAB(std::move(resource1), std::move(resource2));
> }

What you say is true, but you can make the point without writing clumsy
C and without assuming that the support functions have not been written
to handle prepare, combine and release actions for null pointers
correctly.  The C code might, in fact, look like this:

  A *resource1 = PrepareResourceA(arg1, arg2);
  B *resource2 = PrepareResourceB(arg1, arg2, resource1);
  bool result = CombineAB(resource1, resource2, presult);
  ReleaseResourceA(resource1);
  ReleaseResourceB(resource2);
  return result;

-- 
Ben.

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


Thread

To C or not to C++ NOSPAM.Alan.Beck@darkrealms.ca (Alan Beck) - 2022-08-08 09:43 +0000
  Re: To C or not to C++ Paavo Helde <eesnimi@osa.pri.ee> - 2022-08-08 20:02 +0300
  Re: To C or not to C++ Juha Nieminen <nospam@thanks.invalid> - 2022-08-09 05:38 +0000
    Re: To C or not to C++ Ralf Fassel <ralfixx@gmx.de> - 2022-08-09 11:07 +0200
      Re: To C or not to C++ Manfred <noname@add.invalid> - 2022-08-10 02:25 +0200
        Re: To C or not to C++ Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-09 17:52 -0700
          Re: To C or not to C++ Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-08-09 21:39 -0700
            Re: To C or not to C++ Muttley@dastardlyhq.com - 2022-08-10 07:45 +0000
          Re: To C or not to C++ scott@slp53.sl.home (Scott Lurndal) - 2022-08-10 19:50 +0000
            Re: To C or not to C++ Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-10 13:13 -0700
            Re: To C or not to C++ Manfred <noname@add.invalid> - 2022-08-11 04:29 +0200
        Re: To C or not to C++ Juha Nieminen <nospam@thanks.invalid> - 2022-08-10 02:41 +0000
        Re: To C or not to C++ Muttley@dastardlyhq.com - 2022-08-10 07:39 +0000
          Re: To C or not to C++ Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-10 10:11 -0700
            Re: To C or not to C++ Muttley@dastardlyhq.com - 2022-08-12 08:23 +0000
              Re: To C or not to C++ Juha Nieminen <nospam@thanks.invalid> - 2022-08-12 12:12 +0000
                Re: To C or not to C++ Muttley@dastardlyhq.com - 2022-08-12 14:41 +0000
                Re: To C or not to C++ Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-12 12:09 -0700
                Re: To C or not to C++ David Brown <david.brown@hesbynett.no> - 2022-08-13 10:28 +0200
                Re: To C or not to C++ Muttley@dastardlyhq.com - 2022-08-13 09:37 +0000
              Re: To C or not to C++ Paavo Helde <eesnimi@osa.pri.ee> - 2022-08-12 15:55 +0300
                Re: To C or not to C++ Muttley@dastardlyhq.com - 2022-08-12 14:43 +0000
                Re: To C or not to C++ Paavo Helde <eesnimi@osa.pri.ee> - 2022-08-12 18:07 +0300
                Re: To C or not to C++ Muttley@dastardlyhq.com - 2022-08-12 15:14 +0000
                Re: To C or not to C++ Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-12 12:11 -0700
                Re: To C or not to C++ Muttley@dastardlyhq.com - 2022-08-13 09:38 +0000
                Re: To C or not to C++ David Brown <david.brown@hesbynett.no> - 2022-08-13 17:56 +0200
                Re: To C or not to C++ Paavo Helde <eesnimi@osa.pri.ee> - 2022-08-24 11:32 +0300
                Re: To C or not to C++ Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-08-24 11:33 +0100
                Re: To C or not to C++ Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-08-24 04:37 -0700
                Re: To C or not to C++ Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-08-24 13:31 +0100
                Re: To C or not to C++ Muttley@dastardlyhq.com - 2022-08-24 14:09 +0000
                Re: To C or not to C++ Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-08-24 15:31 +0100
                Re: To C or not to C++ Muttley@dastardlyhq.com - 2022-08-24 14:38 +0000
                Re: To C or not to C++ Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-08-24 15:57 +0100
                Re: To C or not to C++ Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-24 10:41 -0700
                Re: To C or not to C++ Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-08-24 21:48 +0100
                Re: To C or not to C++ "Alf P. Steinbach" <alf.p.steinbach@gmail.com> - 2022-08-25 07:34 +0200
                Re: To C or not to C++ Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-08-25 11:29 +0100
                Re: To C or not to C++ Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-08-25 04:14 -0700
                Re: To C or not to C++ Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-08-25 12:36 +0100
                Re: To C or not to C++ Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-08-25 05:16 -0700
                Re: To C or not to C++ Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-08-25 17:16 +0100
                Re: To C or not to C++ David Brown <david.brown@hesbynett.no> - 2022-08-25 20:35 +0200
                [OT] Bad CS course, no cookie (Was: To C or not to C++) Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-08-25 21:32 +0100
                Re: [OT] Bad CS course, no cookie (Was: To C or not to C++) David Brown <david.brown@hesbynett.no> - 2022-08-25 23:16 +0200
                Re: [OT] Bad CS course, no cookie Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-08-26 00:33 +0100
                Re: [OT] Bad CS course, no cookie David Brown <david.brown@hesbynett.no> - 2022-08-26 10:39 +0200
                Re: [OT] Bad CS course, no cookie Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-08-26 10:57 +0100
                Re: [OT] Bad CS course, no cookie David Brown <david.brown@hesbynett.no> - 2022-08-26 12:49 +0200
                Re: To C or not to C++ Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-08-25 19:56 -0700
                Re: To C or not to C++ David Brown <david.brown@hesbynett.no> - 2022-08-26 10:47 +0200
                Re: To C or not to C++ Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-08-26 02:48 -0700
                Re: To C or not to C++ David Brown <david.brown@hesbynett.no> - 2022-08-26 13:02 +0200
                Re: To C or not to C++ Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-08-26 04:57 -0700
                Re: To C or not to C++ David Brown <david.brown@hesbynett.no> - 2022-08-26 14:55 +0200
                Re: To C or not to C++ Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-08-26 06:20 -0700
                Re: To C or not to C++ Manfred <noname@add.invalid> - 2022-08-27 18:44 +0200
                Re: To C or not to C++ David Brown <david.brown@hesbynett.no> - 2022-08-28 11:30 +0200
                Re: To C or not to C++ Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-25 10:06 -0700
                Re: To C or not to C++ Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-08-25 10:32 -0700
                Re: To C or not to C++ Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-25 11:36 -0700
                Re: To C or not to C++ David Brown <david.brown@hesbynett.no> - 2022-08-25 20:47 +0200
                Re: To C or not to C++ Manfred <noname@add.invalid> - 2022-08-26 03:11 +0200
                Re: To C or not to C++ David Brown <david.brown@hesbynett.no> - 2022-08-25 09:21 +0200
                Re: To C or not to C++ scott@slp53.sl.home (Scott Lurndal) - 2022-08-25 12:58 +0000
                Re: To C or not to C++ Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-25 10:23 -0700
                Re: To C or not to C++ David Brown <david.brown@hesbynett.no> - 2022-08-25 20:51 +0200
                Re: To C or not to C++ Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-25 12:14 -0700
                Re: To C or not to C++ scott@slp53.sl.home (Scott Lurndal) - 2022-08-24 13:56 +0000
                Re: To C or not to C++ Paavo Helde <eesnimi@osa.pri.ee> - 2022-08-24 17:18 +0300
                Re: To C or not to C++ Muttley@dastardlyhq.com - 2022-08-24 14:25 +0000
                Re: To C or not to C++ scott@slp53.sl.home (Scott Lurndal) - 2022-08-12 16:46 +0000
                Re: To C or not to C++ Juha Nieminen <nospam@thanks.invalid> - 2022-08-15 06:16 +0000
                Re: To C or not to C++ Muttley@dastardlyhq.com - 2022-08-15 19:01 +0000
                Re: To C or not to C++ Bo Persson <bo@bo-persson.se> - 2022-08-15 22:22 +0200
                Re: To C or not to C++ David Brown <david.brown@hesbynett.no> - 2022-08-16 08:48 +0200
                Re: To C or not to C++ Muttley@dastardlyhq.com - 2022-08-16 19:19 +0000
                Re: To C or not to C++ Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-16 12:56 -0700
                Re: To C or not to C++ Muttley@dastardlyhq.com - 2022-08-17 18:47 +0000
                Re: To C or not to C++ Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-17 14:49 -0700
                Re: To C or not to C++ Muttley@dastardlyhq.com - 2022-08-18 14:49 +0000
                Re: To C or not to C++ Manfred <noname@add.invalid> - 2022-08-19 03:10 +0200
                Re: To C or not to C++ d thiebaud <thiebauddick2@aol.com> - 2022-08-18 22:12 -0400
                Re: To C or not to C++ Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-18 20:08 -0700
                Re: To C or not to C++ Muttley@dastardlyhq.com - 2022-08-19 10:39 +0000
                Re: To C or not to C++ Juha Nieminen <nospam@thanks.invalid> - 2022-08-17 06:45 +0000
                Re: To C or not to C++ Muttley@dastardlyhq.com - 2022-08-17 18:48 +0000
                Re: To C or not to C++ Muttley@dastardlyhq.com - 2022-08-16 19:16 +0000
              Re: To C or not to C++ Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-12 12:03 -0700
        Re: To C or not to C++ David Brown <david.brown@hesbynett.no> - 2022-08-10 10:13 +0200
          Re: To C or not to C++ Manfred <noname@add.invalid> - 2022-08-11 04:25 +0200
            Re: To C or not to C++ Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-08-11 01:03 -0700
            Re: To C or not to C++ Juha Nieminen <nospam@thanks.invalid> - 2022-08-11 08:11 +0000
            Re: To C or not to C++ David Brown <david.brown@hesbynett.no> - 2022-08-11 13:53 +0200
              Re: To C or not to C++ Manfred <noname@add.invalid> - 2022-08-13 04:13 +0200
                Re: To C or not to C++ David Brown <david.brown@hesbynett.no> - 2022-08-13 21:13 +0200
                Re: To C or not to C++ Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-08-13 12:29 -0700
                Re: To C or not to C++ Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-13 13:12 -0700
                Re: To C or not to C++ David Brown <david.brown@hesbynett.no> - 2022-08-14 00:44 +0200
            Re: To C or not to C++ Öö Tiib <ootiib@hot.ee> - 2022-08-12 02:54 -0700
              Re: To C or not to C++ Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-12 12:12 -0700
                Re: To C or not to C++ Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2022-08-12 16:22 -0700
                Re: To C or not to C++ Öö Tiib <ootiib@hot.ee> - 2022-08-12 17:49 -0700
                Re: To C or not to C++ Manfred <noname@add.invalid> - 2022-08-13 03:16 +0200
                Re: To C or not to C++ Öö Tiib <ootiib@hot.ee> - 2022-08-13 09:08 -0700
                Re: To C or not to C++ Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-08-15 14:44 -0700
        Re: To C or not to C++ Ralf Fassel <ralfixx@gmx.de> - 2022-08-10 12:06 +0200
        Re: To C or not to C++ Juha Nieminen <nospam@thanks.invalid> - 2022-08-11 07:04 +0000
  Re: To C or not to C++ Bonita Montero <Bonita.Montero@gmail.com> - 2022-08-09 12:31 +0200
    Re: To C or not to C++ Muttley@dastardlyhq.com - 2022-08-09 15:59 +0000
    Re: To C or not to C++ Frederick Virchanza Gotham <cauldwell.thomas@gmail.com> - 2022-08-19 04:09 -0700
  Re: To C or not to C++ "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2022-08-13 12:17 -0700
  Re: To C or not to C++ "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2022-08-27 23:15 -0700

csiph-web