Deutsch English Français Italiano |
<v2voe0$3fnv7$2@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!feeds.phibee-telecom.net!news.mixmin.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: David Brown <david.brown@hesbynett.no> Newsgroups: comp.lang.c Subject: Re: C23 thoughts and opinions Date: Sun, 26 May 2024 18:36:16 +0200 Organization: A noiseless patient Spider Lines: 124 Message-ID: <v2voe0$3fnv7$2@dont-email.me> References: <v2l828$18v7f$1@dont-email.me> <v2o57g$1t5p4$1@raubtier-asyl.eternal-september.org> <7d0e8f25-a8ba-4995-9b90-ff35f85d423f@gmail.com> <v2p91e$26lpk$1@raubtier-asyl.eternal-september.org> <beffc569-3606-b627-ded9-93ce8478f2dd@please.ty> <20240525142325.517@kylheku.com> <v2ul1f$3aa7c$1@dont-email.me> <871q5o29af.fsf@nosuchdomain.example.com> <v2v7av$3d561$1@dont-email.me> <20240526153913.00007f65@yahoo.com> <v2vefo$3e72q$1@dont-email.me> <v2vh0f$3eaba$3@dont-email.me> <v2vjc8$3evcm$1@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Sun, 26 May 2024 18:36:17 +0200 (CEST) Injection-Info: dont-email.me; posting-host="75f63f5864dc091ec43360d736bfcccd"; logging-data="3661799"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19k/M4LoDYE6VauT9NWrrEtIouDMp/8rRk=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:5iLX2/hDAMlcWT2E3ObDq4MZbAs= In-Reply-To: <v2vjc8$3evcm$1@dont-email.me> Content-Language: en-GB Bytes: 6545 On 26/05/2024 17:10, jak wrote: > David Brown ha scritto: >> On 26/05/2024 15:46, jak wrote: >>> Michael S ha scritto: >>>> On Sun, 26 May 2024 13:44:32 +0200 >>>> jak <nospam@please.ty> wrote: >>>> >>>>> Keith Thompson ha scritto: >>>>>> jak <nospam@please.ty> writes: >>>>>>> Kaz Kylheku ha scritto: >>>>>>>> On 2024-05-24, jak <nospam@please.ty> wrote: >>>>>>>>> Bonita Montero ha scritto: >>>>>>>>>> Am 23.05.2024 um 21:49 schrieb Thiago Adams: >>>>>>>>>>> On 23/05/2024 16:25, Bonita Montero wrote: >>>>>>>>>>>> I ask myself what the point is in further developing a >>>>>>>>>>>> language like this that can actually no longer be saved. >>>>>>>>>>> do you mean C++? >>>>>>>>>> >>>>>>>>>> No, C. >>>>>>>>> >>>>>>>>> I think you have a lot of confusion about programming languages. >>>>>>>>> C and C++ are not comparable languages. >>>>>>>> Except for observations like that we can write useful, production >>>>>>>> software that compiles as C or C++, but go on ... >>>>>>> >>>>>>> Indeed there are c++ compilers who, if used to compile c code, >>>>>>> could decide to call the c compiler to do the work, but if >>>>>>> something in the code is not strictly c, then the compilation will >>>>>>> be in c++, the size of the executable will increase significantly >>>>>>> and will need of an internal or external runtimer to work. If it >>>>>>> were the same thing you would not get different things. >>>>>> >>>>>> Oh? Do you know of a C++ compiler that actually behaves this way? >>>>>> I've never heard of such a thing. >>>>>> >>>>>> C and C++ are closely related, and C and C++ compilers often share >>>>>> backends, but the two languages have different grammars. The gcc >>>>>> command, for example, can invoke either a C or C++ compiler, but it >>>>>> knows which language it's compiling based on the source file name or >>>>>> command line options, before it's even seen the content. >>>>>> >>>>>> There are programs that are valid C and valid C++ but with different >>>>>> behavior. How would a compiler that behaves as you describe cope >>>>>> with that? >>>>> >>>>> For example g++ makes something similar: if you pass a file .C it >>>>> compile the C code but if the file (.C) contains C++ code then >>>>> compile C++. >>>>> >> >> No. >> >>>> >>>> No, it does not. >>>> g++ compiles as C++ unless you tell it to compile as C with '-x c' >>>> option. >>>> >> >> No. >> >>>> >>>> >>> >>> You didn't read carefully or I didn't express myself well. I wrote that >>> the g++ compile c++ even if it is written inside a .c file. >>> However in doubt I preferred to try. If I pass to g++ a .c file that >>> contains c code, it compiles without any option, perhaps because it >>> reads as if it were c++ but in any case compiles it. >>> >> >> No. >> >> >> The way gcc handles all this is actually quite straightforward. >> >> First, there is no difference between the commands "gcc" and "g++" in >> the languages supported, or the way the language is determined. The >> only difference between these two is the standard libraries linked by >> default when generating a final executable - "g++" automatically >> includes the C++ standard libraries, while "gcc" only has the C >> standard libraries. >> >> In neither case does "gcc" or "g++" actually handle the compilation - >> these are driver front-ends that pass things on to the actual >> compilers, assemblers and linkers (and any other bits and pieces >> required). >> >> The front-ends determine the language to use primarily from the suffix >> of the source file it is given. ".c" files are compiled as C. >> ".cpp", ".c++", ".cc", ".C" (note the capital C), ".cp", ".cxx", and >> ".CPP" are compiled as C++. (There are many other extensions >> supported for different languages.) >> >> The language choice can be overridden by using the "-x" switch, such >> as "-x c" or "-x c++". The standard can be specified with "-std=". >> >> There is no automatic detection of C or C++ based on the /content/ of >> the files. >> >> >> <https://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html> >> >> > > ? > I really wrote that something similar (similar != equal) did g++ and > that, if you write c++ code in a file with the .c extension, the g++ > compile it. I never wrote that it was automatically recognized. > In addition, you just explained why g++ compile a .c that contains c++ > code. I don't understand: no what? > I made an error here - "g++ foo.c" /will/ treat the file as C++. I apologise for that, as it made things a lot more confusing. But that is not what you wrote. Perhaps you didn't write what you intended to write. You said that g++ somehow determines whether to compile code as C or C++ based on the /contents/ of the file, not the filename suffix. And that is completely wrong. You also mixed up ".c" and ".C". gcc considers ".c" to be C code, while ".C" (with a capital C) is considered C++.