Deutsch English Français Italiano |
<v2vh0f$3eaba$3@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!feeds.phibee-telecom.net!3.eu.feeder.erje.net!feeder.erje.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 16:29:35 +0200 Organization: A noiseless patient Spider Lines: 100 Message-ID: <v2vh0f$3eaba$3@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> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Sun, 26 May 2024 16:29:35 +0200 (CEST) Injection-Info: dont-email.me; posting-host="75f63f5864dc091ec43360d736bfcccd"; logging-data="3615082"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19V4hNl4ucQ7wo4T0IIbZqptWEXgj1/I94=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:tkSAWm2pIqLBlV7xAf5I4Z3ifEA= In-Reply-To: <v2vefo$3e72q$1@dont-email.me> Content-Language: en-GB Bytes: 5355 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>