İşlev prototipleriyle bir başlık dosyası oluşturan BASH komut dosyası


0

Çok fazla statik bağlantı içeren bir C projesi yapıyorum.

"Örtük işlev bildirimi" hatalarından kurtulmak için basit bir çözüm kullanacağım - işlev prototipleri içeren bir başlık dosyası.

Bu senaryoyu ben yazdım:

#!/bin/bash
for file_to_parse in `find -type f -name "*.c"`; do
    cproto $file_to_parse > proto.h 2> /dev/null
done

proto.hOrada bir dosya oluşturmalı ve fonksiyon prototiplerini saklamalıdır.

Notlar:

find -type f -name "*.c" bu komut, bu betiğin dizinindeki tüm c dosyalarının yollarını döndürür.

Örneğin ./folder1/file1.c

cproto <i>file</i>=> bu, içinde bulunan işlevlerden işlev prototipleri oluşturur file.

Örneğin <code>double myfunction(int a,char b);

Sorun:

Kod boş bir dosya oluşturur.

Bu bash betiğinin nesi var?


2
Peki sorunuz ne?
DavidPostill

Yanıtlar:


3

Bunu değiştirmenin kesinlikle birçok yolu var. İşte bir tane:

 #!/bin/bash
 if [ ! -f proto.h ]; then
       touch proto.h
 fi
 for file_to_parse in `find -type f -name "*.c"`; do
    cproto $file_to_parse >> proto.h 2> /dev/null
 done

Hata, cproto...satırdaki yönlendirmededir : basit >ilk önce hedef dosyayı siler, sonra ona yazar. Bunun yerine, yok etmeden hedef dosyaya >> ekler . ifDöngü sadece varolmayan dosyaya ekleme olmayacak ilk geçişte emin olmak için vardır: varolmayan dosyaya ekleme yanlış bir şey, herhangi bir hata oluştu yoktur; Sadece yazmadan önce basit, düzenli bir dosya olduğundan emin olmak isterim .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.