Using gcc as a sort of scripting language.

Paul Markfort paulfm.mn@gmail.com
Sun Dec 29 19:08:48 GMT 2024


You can also do what I do now (the example in my first message), and don't need to pre-process the file before sending it to the compiler.  What Jonothan suggested ("Still it would be a nice touch ...") would be great - but simply being able use a custom script to (like I do in the example) without all the convolutions I used to make it work - would be a good solution.

My goal would just be to have C, C++, etc, simply ignore the "#!" line, if it is the very first line.
If you want to have additional lines, have it ignore everything until it sees an  "#end" (or some other token).

Basically "#!" would become a special comment (but would only work if the file essentially started with it - first non-blank characters).

Think of users who use scripts all the time, but rarely use Compiled languages.





On 2024-12-28 4:47 PM, Florian Weimer wrote:
> * Jonathan Wakely via Gcc:
> 
>> Here's a complete example:
>>
>> #!/bin/sh
>> set -e
>> out=$(mktemp /tmp/a.out.XXXXXX)
>> sed 1,5d "$0" | gcc -x c - -o "$out"
>> exec "$out"
>>
>> #include <stdio.h>
>> int main()
>> {
>>    puts("Hello, world");
>>    return 0;
>> }
> 
> Or this, with accurate locations for diagnostics and argument
> handling:
> 
> #!/bin/sh
> set -e
> out=$(mktemp /tmp/a.out.XXXXXX)
> (echo "#line  6 \"$0\""; sed 1,5d "$0") | gcc -x c - -o "$out"
> exec "$out" "$@"
> 
> #include <stdio.h>
> int main()
> {
>    puts("Hello, world");
>    return 0;
> }
> 
> Still it would be a nice touch if we could do
> 
> #!/usr/bin/gcc -f
> #include <stdio.h>
> int main()
> {
>    puts("Hello, world");
>    return 0;
> }
> 
> instead.
> 

-- 
--------------------------------------------------------
The views and opinions expressed above are strictly
those of the author(s).  The content of this message has
not been reviewed nor approved by any entity whatsoever.
--------------------------------------------------------
Paul FM         Info: http://paulfm.com/~paulfm/
--------------------------------------------------------


More information about the Gcc mailing list