ideas icon indicating copy to clipboard operation
ideas copied to clipboard

Разрешить shebang в C++

Open sergii-rybin-tfs opened this issue 2 years ago • 3 comments

Разрешить shebang в C++ препроцессоре

Пожалуй C++ один из немногих популярных языков программирования где компилятор всё ещё запрещает shebang.

В итоге на C++ проектах можно увидеть целый зоопарк разных скриптов написанных на bash/ch/perl/python/go для решения задач связанных со сборкой, тестированием или деплоем.

Эта фича вместе с #558 может открыть новую сферу для применения C++ которую до этого занимали скриптовые языки.

Полезные ссылки:

  • https://en.wikipedia.org/wiki/Shebang_(Unix)
  • https://habr.com/ru/articles/488962/

sergii-rybin-tfs avatar Oct 23 '23 13:10 sergii-rybin-tfs

Зачем это нужно, если всё и так работает?

/usr/bin/c++shell

#!/bin/bash

msg_file=/dev/null
#msg_file=/dev/stdout

tmp_path=$HOME"/.cache/c++/"
mkdir -p $tmp_path
tmp_file=$1".c++"
exe_file=$1".bin"
if test $1 -nt  $tmp_path$exe_file; then
    echo "Need to recompile.." > $msg_file
    tail -n +2 $1 > $tmp_path$tmp_file
    eval "g++ -o $tmp_path$exe_file $tmp_path$tmp_file > /dev/null 2>&1"
    if [ $? -eq 0 ]
    then
	echo "Compiled ok" > $msg_file
    else
	echo "Compile error" > $msg_file
	exit 255
    fi
fi
eval "$tmp_path$exe_file $@1"

test.cpp

#!/usr/bin/c++shell

#include <iostream>

int main() {
   std::cout << "Hello, world!\n";
}

Shell

eoanermine@eoanermine: ~$ ./test.cpp
Hello, world!

eoan-ermine avatar Nov 09 '23 19:11 eoan-ermine

Зачем это нужно, если всё и так работает?

Есть более красивое решение в 2 комментария в cpp файле. Без дополнительного скрипта.

Но сам файл от этого не станет валидным cpp файлом.

sergii-rybin-tfs avatar Nov 09 '23 19:11 sergii-rybin-tfs

Лучше тогда уже делать еще один ISO стандарт на СMake.

incoder1 avatar Feb 28 '24 12:02 incoder1