Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
sergii-rybin-tfs opened this issue Oct 23, 2023 · 3 comments
Open

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

sergii-rybin-tfs opened this issue Oct 23, 2023 · 3 comments

Comments

@sergii-rybin-tfs
Copy link

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

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

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

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

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

@eoan-ermine
Copy link

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

/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!

@sergii-rybin-tfs
Copy link
Author

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

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

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

@incoder1
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants