Miten pitkälle voi korvata bash:in .sh tiedostojen käytön opettelua tekemällä tarvitut asiat c :lla? Olisi hyvä jos c :aa opettelevan ei tarvitsisi opetella toista kieltä tiettyihin toimintoihin.
Tässä on c esimerkki komentorivien käytöstä "system" komennon avulla: (normaali muistutus vertailumerkkien korvauksesta) (astyle on hyvä lähdekoodin muotoiluohjelma, johon tarvitaan mutkikkaat komentoriviparametrit)
#include pienempi_kuiniostreamsuurempi_kuin
#includepienempi_kuincstdiosuurempi_kuin
#includepienempi_kuincstdlibsuurempi_kuin
#includepienempi_kuincstringsuurempi_kuin
#includepienempi_kuinstringsuurempi_kuin
using namespace std;
int main( int argc, char **argv )
{
char ckr[400];
const char *akri={"astyle -v -A7 -U -D "};
string sav( argv[1] );
string sakri( akri );
sakri =sav;
strcpy( ckr, sakri.c_str() );
system( ckr );
return 0;
}
Tässä on c esimerkki komentorivien käytöstä "system" komennon avulla: (normaali muistutus vertailumerkkien korvauksesta) (astyle on hyvä lähdekoodin muotoiluohjelma, johon tarvitaan mutkikkaat komentoriviparametrit)
#include pienempi_kuiniostreamsuurempi_kuin
#includepienempi_kuincstdiosuurempi_kuin
#includepienempi_kuincstdlibsuurempi_kuin
#includepienempi_kuincstringsuurempi_kuin
#includepienempi_kuinstringsuurempi_kuin
using namespace std;
int main( int argc, char **argv )
{
char ckr[400];
const char *akri={"astyle -v -A7 -U -D "};
string sav( argv[1] );
string sakri( akri );
sakri =sav;
strcpy( ckr, sakri.c_str() );
system( ckr );
return 0;
}
Vastaukset 1
Vanhimmat
Kirjoittamasi koodi yrittää ehkä tehdä saman kuin Bash-skripti
#!/bin/bash
exec astyle -v -A7 -U -D "$1"
mutta tekee sen paljon huonommin. C -ohjelmasi ei toimi, jos parametri on 400 merkin pituinen tai jos se sisältää välilyöntejä. Se hukkaa astyle:n paluuarvon ja käynnistää ylimääräisen prosessin. Nämä ovat tietenkin sivuseikkoja siihen verrattuna, että ohjelma on Bash-skriptiin verrattuna lukukelvoton ja se pitää kääntää ennen kuin sitä voi käyttää.
> Olisi hyvä jos c :aa opettelevan ei tarvitsisi opetella toista kieltä tiettyihin toimintoihin.
Yhtä hyvä kuin jos lääkäriksi opettelevan ei tarvitsisi opetella tikkien ompelun lisäksi laastarin käyttöä. Tuloksena olisi tehottomuutta ja turhaa kipua.