Menu
Jest wolny
Zameldować się
główny  /  PRZEZ / Plik źródłowy C. Online, w tym jeden plik źródłowy C w innym? Co może być w pliku nagłówka

Plik źródłowy C. Online, w tym jeden plik źródłowy C w innym? Co może być w pliku nagłówka

Pliki źródłowe

Tekst programu SI można podzielić na kilka plików źródłowych. Plik źródłowy jest plikiem tekstowym zawierającym cały program lub jego część. Podczas kompilacji programu źródłowego każdy z elementów jego plików źródłowych musi być skompilowany oddzielnie, a następnie powiązany z innymi plikami przez łącznik. Oddzielne pliki źródłowe można łączyć w jeden plik źródłowy, skompilowany jako pojedynczy liczbę całkowitą, dzięki dyrektywie przedprocesorową #Zawierać..

Plik źródłowy może zawierać dowolną holistyczną kombinację dyrektyw, wskazując kompilator, reklamy i definicje. W ramach integralności rozumie się, że takie obiekty jako definicje funkcji, struktury danych lub zestaw konwencjonalnych dyrektyw kompilacji muszą być całkowicie umieszczone w jednym pliku, tj. Nie mogą zaczynać się w jednym pliku, ale kontynuuj w drugiej.

Plik źródłowy nie musi zawierać wykonanych operatorów. Czasami wygodne jest umieszczenie definicji zmiennych w jednym pliku, aw innych plikach, aby korzystać z tych zmiennych według reklamy. W takim przypadku definicje zmiennych stają się łatwo dostępne do wyszukiwania i modyfikacji. Tych samych rozważań, wymienione stałe i definicje makro są zwykle gromadzone w oddzielnych plikach i obejmują je poprzez dyrektywę przedprocesorową. #Zawierać. W tych źródłowych plikach, w których są wymagane.

Uwaga Kompilator zwykle stosuje się tylko do pojedynczych sekcji pliku źródłowego. Szczególne działania kompilatora określone przez instrukcje są określone przez szczególną realizację kompilatora języka SI.

W poniższym przykładzie program źródłowy składa się z dwóch plików źródłowych. Funkcje główny. i max. Przedstawione w oddzielnych plikach. Funkcjonować główny. używa funkcji. max. w procesie jego wykonania.

/ * Plik źródłowy 1 - Main * /

extern int max (int, int); / * Funkcja funkcji * /

główna () / * Definicja funkcji * /

int w \u003d jeden, x \u003d dwa, y \u003d trzy;

/ * Plik źródłowy 2 - max * /

int MAX (A, B) / * Definicja funkcji * /

W funkcji pierwszej pliku źródłowego max. zadeklarowany, ale nie zdefiniowany. Taka funkcja reklamy nazywana jest wstępna; Pozwala kompilatorowi kontrolować odwołanie do funkcji, zanim zostanie zdefiniowany. Definicja funkcji główny. Zawiera połączenia funkcyjne. max..

Wiersze zaczynające się od symbolu # są dyrektywami preprocesora. Dyrektywy wskazują preprocesor na potrzebie wymiany w pliku pierwszego źródła tego, dwóch, trzech identyfikatorów do odpowiednich wartości. Obszar dyrektywy nie ma zastosowania do drugiego pliku źródłowego.



W zależności od środowiska montażowego (nie określasz) możesz wykryć, że działa dokładnie tak, jak chcesz.

Istnieje jednak wiele środowisk (zarówno IDE, jak i wielu ręcznie robionych makefile), które czekają na kompilację * .C - jeśli tak się stanie, prawdopodobnie natkną się na błędy łącznika z powodu powielania znaków.

Z reguły należy unikać tej praktyki.

Jeśli trzeba trzeba włączyć źródło (i zazwyczaj należy go unikać), użyj innego pliku dla pliku.

Włączenie pliku C innego pliku jest legalne, ale nie odpowiednie, jeśli zdecydowanie nie wiesz, dlaczego to robisz i co próbują osiągnąć.
Jestem prawie przekonany, że jeśli opublikujesz tutaj powód, zgodnie z którym twoje pytanie zostanie przekazane społeczności, znajdziesz inny odpowiedni sposób, aby osiągnąć swój cel (zwrócić uwagę na "prawie", ponieważ jest to możliwe, że ta decyzja, Biorąc pod uwagę kontekst).

Nawiasem mówiąc, przegapiłem drugą część pytania. Jeśli plik C jest włączony w innym pliku i jednocześnie w tym samym czasie, prawdopodobnie napotkasz problem powielania znaków, po co wiązanie obiektu, to znaczy, ta sama funkcja zostanie zdefiniowana dwukrotnie (jeśli tylko nie są statyczne ).

Język C nie zakazuje tego typu #include, ale powstała jednostka tłumaczeniowa musi nadal być ważna C.

Nie wiem, który program używasz pliku S.PRJ. Jeśli używasz czegoś takiego jak "Make" lub Visual Studio lub coś innego, po prostu upewnij się, że zainstalujesz swoją listę plików, które muszą być skompilowane bez tego, czego nie można skompilować niezależnie.

Możesz użyć kompilatora GCC w Linux, aby nawiązać dwa pliki jednym wyjściem. Przypuśćmy, że masz dwa pliki C, z których jeden jest "Main.C", a drugi jest "support.c". W ten sposób polecenie podłączenia tych dwóch

GCC Main.c support.c -o main.Out

Te dwa pliki będą powiązane z wyjściem głównym. Aby uruchomić polecenie wyjściowe

./główne wyjście.

Jeśli korzystasz z funkcji Main.C, który jest zadeklarowany w pliku support.c, musisz zadeklarować go głównie za pomocą zewnętrznej klasy pamięci.

Używany prawidłowo, może to być przydatna metoda.

Załóżmy, że masz skomplikowany podsystem krytyczny z dość małym publicznym interfejsem i dużą ilością niezrealizowanego kodu realizacji. Kod działa do kilku tysięcy wierszy, setki funkcji prywatnych i dość dość prywatnych danych. Jeśli pracujesz z nietrivialnymi wbudowanymi systemami, prawdopodobnie często radzisz sobie z tą sytuacją.

Twoja decyzja prawdopodobnie będzie wielopoziomowa, modułowa i uwolniona, a te aspekty można wygodnie reprezentować i wzmocnić, kodując różne części podsystemu w różnych plikach.

Z C, dużo możesz stracić, zrób to. Prawie wszystkie narzędzia zapewniają przyzwoitą optymalizację dla pojedynczej jednostki kompilacji, ale bardzo pesymistycznie odnoszą się do czegoś zadeklarowanego zewnętrznego.

Jeśli umieścisz wszystko w jednym module źródłowym C, dostaniesz -

    Poprawa kodu wydajności i rozmiaru - W wielu przypadkach zostaną zbudowane połączenia funkcyjne. Nawet bez inlay, kompilator ma możliwości tworzenia bardziej wydajnego kodu.

    Dane i funkcje poziomu kanału są ukryte.

    Unikanie zanieczyszczenia przestrzeni nazw i jego konsekwencji - możesz użyć mniej dużych nazwisk.

    Szybsza kompilacja i komunikacja.

Ale masz też niegodziwy bałagan, jeśli chodzi o edycję tego pliku, a tracisz dorozumianą modułowość. Można go przezwyciężyć, dzieląc kod źródłowy do kilku plików i obracając je do pojedynczej jednostki kompilacji.

Jednak musisz narzucić pewne porozumienia, aby sobie z tym poradzić. Do pewnego stopnia będzie zależał od twojego łańcucha instrumentalnego, ale niektórych ogólnych wskaźników -

    Umieść otwarty interfejs w osobnym pliku nagłówka - nadal musisz to zrobić.

    Mieć jeden główny plik.c, który zawiera wszystkie pliki dziecko. Może również zawierać kod dla otwartego interfejsu.

    Użyj protestujących kompilatorów, aby prywatne nagłówki i moduły źródła nie są dołączone do zewnętrznych modułów kompilacji.

    Wszystkie dane osobowe i funkcje muszą być deklarowane statyczne.

    Utrzymuj koncepcyjną różnicę między plikami. Wykorzystuje istniejące umowy. Różnica polega na tym, że będziesz miał dużo statycznych reklam w nagłówkach.

    Jeśli łańcuch narzędzi nie nakłada żadnych baz, nie należy określić prywatnych plików implementacyjnych jako .c I.H. Jeśli używasz funkcji włączonych strażników, nie będą generować kodu i nie wprowadzą żadnych nowych nazw (w rezultacie możesz napotkać kilka pustych segmentów). Ogromna zaletą jest to, że inne narzędzia (na przykład IDE) będą odpowiednio przetwarzać te pliki.

Rozszerzenie pliku nie ma znaczenia dla większości kompilatorów C, więc będzie działać.

Jednak w zależności od ustawień pliku lub projektu, zawarte plik C może wygenerować osobny plik obiektu. Gdy wiązanie może to prowadzić do podwójnych określonych znaków.

musisz dodać tytuł podobny do tego.

#Zawierać.

uwaga: Oba pliki muszą być umieszczone w jednym miejscu.

Możesz poprawnie włączyć pliki.c or.cpp do innych plików źródłowych. W zależności od środowiska IDE można zwykle zapobiegać podwójnym wiązaniu, przeglądając właściwości plików źródłowych, które chcesz włączyć, zwykle klikając na nie i kliknij Właściwości i usuń zaznaczenie pudełka / sprawdź kompilację / Link / Exclude z montaż lub jakakolwiek inna opcja. może. Lub nie można włączyć pliku w samym projekcie, więc środowisko IDE nawet nie wie, że istnieje, i nie spróbuje go skompilować. A dzięki pliki make, po prostu nie umieściłeś do niego pliku do kompilacji i układu.

Edytuj: Przepraszam, odpowiedz na odpowiedź na inne odpowiedzi :(



głosuj online (8)

Włączenie pliku C innego pliku jest legalne, ale nie odpowiednie, jeśli zdecydowanie nie wiesz, dlaczego to robisz i co próbują osiągnąć.
Jestem prawie przekonany, że jeśli opublikujesz tutaj powód, zgodnie z którym twoje pytanie zostanie przekazane społeczności, znajdziesz inny odpowiedni sposób, aby osiągnąć swój cel (zwrócić uwagę na "prawie", ponieważ jest to możliwe, że ta decyzja, Biorąc pod uwagę kontekst).

Nawiasem mówiąc, przegapiłem drugą część pytania. Jeśli plik C jest włączony w innym pliku i jednocześnie w tym samym czasie, prawdopodobnie napotkasz problem powielania znaków, po co wiązanie obiektu, to znaczy, ta sama funkcja zostanie zdefiniowana dwukrotnie (jeśli tylko nie są statyczne ).

Rozszerzenie pliku nie ma znaczenia dla większości kompilatorów C, więc będzie działać.

Jednak w zależności od ustawień pliku lub projektu, zawarte plik C może wygenerować osobny plik obiektu. Gdy wiązanie może to prowadzić do podwójnych określonych znaków.

W zależności od środowiska montażowego (nie określasz) możesz wykryć, że działa dokładnie tak, jak chcesz.

Istnieje jednak wiele środowisk (zarówno IDE, jak i wielu ręcznie robionych makefile), które czekają na kompilację * .C - jeśli tak się stanie, prawdopodobnie natkną się na błędy łącznika z powodu powielania znaków.

Z reguły należy unikać tej praktyki.

Jeśli trzeba trzeba włączyć źródło (i zazwyczaj należy go unikać), użyj innego pliku dla pliku.

Możesz użyć kompilatora GCC w Linux, aby nawiązać dwa pliki jednym wyjściem. Przypuśćmy, że masz dwa pliki C, z których jeden jest "Main.C", a drugi jest "support.c". W ten sposób polecenie podłączenia tych dwóch

GCC Main.c support.c -o main.Out

Te dwa pliki będą powiązane z wyjściem głównym. Aby uruchomić polecenie wyjściowe

./główne wyjście.

Jeśli korzystasz z funkcji Main.C, który jest zadeklarowany w pliku support.c, musisz zadeklarować go głównie za pomocą zewnętrznej klasy pamięci.

Myślałem, że podzielę się sytuacją, kiedy mój zespół postanowił włączyć pliki. Nasz architekt składa się głównie z modułów uwolnionych przez system wiadomości. Te komunikaty są dostępne publicznie i powodują wiele lokalnych funkcji statycznych do wykonywania swojej pracy. Problem pojawił się, gdy próbowałem uzyskać powłokę dla naszych pojedynczych spraw testowych, ponieważ jedynym sposobem na wdrożenie tego konkretnego kodu realizacji pośrednio przez interfejs ogólny komunikat. Z kilkoma cechami pracownika na kolanach w stosie okazał się koszmarem, aby zapewnić właściwą powłokę.

Włączanie plików.C dał nam możliwość dostania się do śruby w samochodzie, byliśmy zainteresowani testami.

Język C nie zakazuje tego typu #include, ale powstała jednostka tłumaczeniowa musi nadal być ważna C.

Nie wiem, który program używasz pliku S.PRJ. Jeśli używasz czegoś takiego jak "Make" lub Visual Studio lub coś innego, po prostu upewnij się, że zainstalujesz swoją listę plików, które muszą być skompilowane bez tego, czego nie można skompilować niezależnie.

Używany prawidłowo, może to być przydatna metoda.

Załóżmy, że masz skomplikowany podsystem krytyczny z dość małym publicznym interfejsem i dużą ilością niezrealizowanego kodu realizacji. Kod działa do kilku tysięcy wierszy, setki funkcji prywatnych i dość dość prywatnych danych. Jeśli pracujesz z nietrivialnymi wbudowanymi systemami, prawdopodobnie często radzisz sobie z tą sytuacją.

Twoja decyzja prawdopodobnie będzie wielopoziomowa, modułowa i uwolniona, a te aspekty można wygodnie reprezentować i wzmocnić, kodując różne części podsystemu w różnych plikach.

Z C, dużo możesz stracić, zrób to. Prawie wszystkie narzędzia zapewniają przyzwoitą optymalizację dla pojedynczej jednostki kompilacji, ale bardzo pesymistycznie odnoszą się do czegoś zadeklarowanego zewnętrznego.

Jeśli umieścisz wszystko w jednym module źródłowym C, dostaniesz -

    Poprawa kodu wydajności i rozmiaru - W wielu przypadkach zostaną zbudowane połączenia funkcyjne. Nawet bez inlay, kompilator ma możliwości tworzenia bardziej wydajnego kodu.

    Dane i funkcje poziomu kanału są ukryte.

    Unikanie zanieczyszczenia przestrzeni nazw i jego konsekwencji - możesz użyć mniej dużych nazwisk.

    Szybsza kompilacja i komunikacja.

Ale masz też niegodziwy bałagan, jeśli chodzi o edycję tego pliku, a tracisz dorozumianą modułowość. Można go przezwyciężyć, dzieląc kod źródłowy do kilku plików i obracając je do pojedynczej jednostki kompilacji.

Jednak musisz narzucić pewne porozumienia, aby sobie z tym poradzić. Do pewnego stopnia będzie zależał od twojego łańcucha instrumentalnego, ale niektórych ogólnych wskaźników -

    Umieść otwarty interfejs w osobnym pliku nagłówka - nadal musisz to zrobić.

    Mieć jeden główny plik.c, który zawiera wszystkie pliki dziecko. Może również zawierać kod dla otwartego interfejsu.

    Użyj protestujących kompilatorów, aby prywatne nagłówki i moduły źródła nie są dołączone do zewnętrznych modułów kompilacji.

    Wszystkie dane osobowe i funkcje muszą być deklarowane statyczne.

    Utrzymuj koncepcyjną różnicę między plikami. Wykorzystuje istniejące umowy. Różnica polega na tym, że będziesz miał dużo statycznych reklam w nagłówkach.

    Jeśli łańcuch narzędzi nie nakłada żadnych baz, nie należy określić prywatnych plików implementacyjnych jako .c I.H. Jeśli używasz funkcji włączonych strażników, nie będą generować kodu i nie wprowadzą żadnych nowych nazw (w rezultacie możesz napotkać kilka pustych segmentów). Ogromna zaletą jest to, że inne narzędzia (na przykład IDE) będą odpowiednio przetwarzać te pliki.

To normalne? Tak, będzie sporządzić

czy jest to zalecane? No - .c Pliki są skompilowane do plików.Obj, które są podłączone po kompilacji (Linker) w pliku wykonywalnym (lub bibliotece), więc nie ma potrzeby dołączenia jednego pliku.c do drugiego. Zamiast tego najprawdopodobniej będziesz chciał dokonać pliku.h, który zawiera listę funkcji / zmiennych dostępnych w pliku innej.c i włącz plik.

Ten rodzaj pytania, zapytałem ostatnio jednego kolegi, zaczynając zaprogramować w SI. I myślałem, że to dobry powód, aby podzielić się moim zrozumieniem tego problemu. Ponieważ nawet doświadczonych programistów nie zawsze mają podobne punkty widzenia na ten temat.

Częściowo jest to kwestia smaku, więc kto jest zainteresowany, jak ja, witaj w kota.

Pomimo faktu, że "Cała prawda" o plikach H jest zawarta w odpowiedniej części opisu Preprocesora GCC, pozwól sobie na niektóre wyjaśnienia i ilustracje.

Tak więc, jeśli jest dosłownie plik nagłówka (plik H) jest plikiem zawierającym deklarację i definicję makra przeznaczoną do użytku w kilku plikach źródłowych (plików C). Zilustrujemy to.

Łatwo jest zauważyć, że funkcje 1 i 2, a także makro 2, są wymienione w obu plikach. A ponieważ włączenie plików nagłówka prowadzi do tych samych wyników, co kopiowanie zawartości do każdego pliku SI, możemy wykonać następujące czynności:

W ten sposób po prostu przydzielamy wspólną część dwóch plików i umieściliśmy go w pliku nagłówka.
Ale czy plik nagłówkowy z interfejsem jest w tym przypadku?

  • Jeśli musimy użyć funkcjonalności, które funkcje 1 i 2 są realizowane gdzie indziej, a następnie tak
  • Jeśli makro 2 jest przeznaczony wyłącznie do użytku w plikach Unit1.C i Unit2.C, nie umieszcza go w pliku interfejsu
Co więcej, czy naprawdę musimy mieć dwa pliki SI do wdrożenia interfejsu zdefiniowanego w pliku nagłówka? Czy jest jeden?
Odpowiedź na to pytanie zależy od szczegółów wdrażania funkcji interfejsu i ich witryny wdrażania. Na przykład, jeśli wykonywanie diagramów bardziej szczegółowe, możesz przesłać opcję, gdy funkcje interfejsu są zaimplementowane w różnych plikach:


Ten przykład wykonania prowadzi do wysokich kodów, niskich testów i złożoności ponownego użycia takich modułów.
Aby nie mieć takich trudności, zawsze rozważam plik C i plik nagłówka jako jeden moduł. W którym,
  • plik nagłówka zawiera tylko te deklaracje funkcji, typów, makr, które są częścią interfejsu tego modułu.
  • Plik C z kolei musi zawierać implementację wszystkich funkcji zadeklarowanych w pliku H, a także typy prywatne, makra i funkcje, które są potrzebne do wdrożenia interfejsu.
Tak więc, gdybym miał okazję wdrożyć kod, że schemat został zastosowany powyżej, starałbym się osiągnąć następujący (koniec _C i _H w nazwach plików dodanych z powodu niemożności korzystania z punktu w narzędziu, do którego używałem Utwórz diagramy):


Diagram pokazuje, że w rzeczywistości mamy do czynienia z dwoma niezależnymi modułami, z których każdy ma swój własny interfejs w postaci pliku nagłówka. Umożliwia to użycie tylko tego interfejsu, który jest naprawdę konieczny w tym konkretnym przypadku. Ponadto moduły te mogą być testowane niezależnie od siebie.
Czytelnik, prawdopodobnie zauważył, że makro 2 z pliku nagłówka ponownie zwrócił jako kopię w obu plikach SI. Oczywiście nie jest bardzo wygodne dla wsparcia. Ale także aby ta makro część interfejsu nie jest poprawna.
W takich przypadkach wolę dokonać oddzielnego pliku nagłówka zawierającego typy i makra potrzebne przez kilka plików SI.

Mam nadzieję, że udało mi się zidentyfikować te podmioty, które muszą być umieszczone w plikach nagłówka. Jak również pokazać różnicę między interfejsami a plikami zawierającymi deklaracje i makra potrzebne kilka plików SI.

Dziękuję za uwagę na materiał.

wsparcie.Microsoft.

Podczas zmiany plików źródłowych w Visual C ++ i zapisz je, ciągi muszą wypełnić znaki "CR / LF" [symbol powrotu karetki, tłumaczenie wiersza]. W systemach UNIX struny są zakończone przy użyciu "LF". Zatem podczas przeglądania plików, które zostały zmienione w grupie Windows w systemach UNIX, zestaw znaków "^ M" mogą pojawić się w liniach. Dzieje się tak tylko w przypadku korzystania z edytora nie wie, jak interpretować plik Windows. Visual C ++ Możesz otworzyć pliki, w ciągach kończących się tworzeniem UNIX LF. Jeśli zmienisz ten plik i zapisz go z Visual C ++, a następnie jest zapisany w formacie systemu Windows (zobaczysz CR / LF, a nie LF, który był wcześniej w systemie).

W tym artykule opisano procedury zapisywania zmienionego pliku utworzonego na platformie Windows w formacie, który może być używany w systemach UNIX.

UWAGA: Visual C ++. Net IDE zawiera funkcje dostępne do zapisania pliku w formacie UNIX. W zintegrowanym środowisku programistycznym zapisz plik za pomocą Zapisz jako..., wybierz Zapisz z listy rozwijanej Zapisz z kodowaniem ...i kliknij przycisk THRN tak. Wybierz z listy rozwijanej Wiersz kodujący UNIX (LF)a następnie kliknij dobrze.

Możesz użyć następujących kroków, aby utworzyć projekt aplikacji Win32 Console, który konwertuje plik zawierający "CR / LF", aby zakończyć ciąg "LF":

  1. Aby utworzyć nowy pusty projekt Win32 z nazwą Dos2unix za pomocą aplikacji konsoli Win32.
  2. Z Plik Menu kliknij Nowya następnie kliknij Akta Patka.
  3. Wybierać Plik źródłowy C / C ++ I wprowadź nazwę nowego pliku Dos2unix.CPP.
  4. Włóż następujący kod w DOS2UNIX.CPP:

    #Zawierać. #Zawierać. #Zawierać. Za pomocą przestrzeni nazw STD; Int main (int argc, char * argv) (jeśli (argc! \u003d 2) (cout<< "Please specify: dos2unix filename" << endl; return 0; } char ch; char temp="\0"; //Open the file for reading in binarymode. ifstream fp_read(argv, ios_base::in \ / ios_base::binary); sprintf(temp, "%s.temp", argv); //Create a temporary file for writing in the binary mode. This //file will be created in the same directory as the input file. ofstream fp_write(temp, ios_base::out \ / ios_base::trunc \ / ios_base::binary); while(fp_read.eof() != true) { fp_read.get(ch); //Check for CR (carriage return) if((int)ch == 0x0D) continue; if (!fp_read.eof())fp_write.put(ch); } fp_read.close(); fp_write.close(); //Delete the existing input file. remove(argv); //Rename the temporary file to the input file. rename(temp, argv); //Delete the temporary file. remove(temp); return 0; }

  5. Z Budynek Menu kliknij Tworzenie dos2unix.exe. Aby utworzyć plik EXE.

Może być konieczne sprawdzenie tego pliku EXE, aby sprawdzić, czy działa poprawnie. Aby to zrobić, otwórz plik w edytorze binarnym Visual C ++ podczas wybierania otwarty w grupie Plik Menu wybierając Dos2unix.ex, ustawienie Otwarty jak Kom. Dwójkowya następnie klikając. otwarty. Na przykład, jeśli plik zawiera "HELOCLFWORLD", dane binarne (szesnastkowe) będzie wyglądać tak:

48 65 6 C 6 C 6F 0 D 0A 57 6F 72 6 C 64

Jest to odpowiednik:

cześć
Pokój

W wierszu polecenia wykonaj polecenie ds2unix.exe . Następnie otwórz plik w edytorze binarnym Visual C ++. Zobaczysz, że zostanie usunięty 0x0D S. Dopóki nie zmieniysz pliku i zapisz go w Visual C ++ 0x0d S nie pojawi się.

Może to być stosowane w połączeniu z modelu automatyki Visual C ++ zautomatyzuj cały proces. Prosty Scenariusz Microsoft Visual Basic Macro można napisać, aby zadzwonić do tego funduszu, ale najpierw należy dodać Usługa Menu jest następujące:

  1. Z Usługa Menu kliknij Oprawaa następnie kliknij Usługa Patka.
  2. Określ nazwę, takie jak Dos2unix, i określ pełną ścieżkę do pliku Dos2unix.exe w Zespół Pole edycji.
  3. Ustaw na argument, $ (nazwa pliku) $ (Fileext).
  4. Określ katalog źródłowy $ (WKSPDIR) (określić własną ścieżkę).

Aby sprawdzić program, otwórz plik w edytorze Visual C ++, a następnie z Usługa Uruchom menu. Dos2unix. znaczy. Zobaczysz, że wszystkie jego znaki zostały usunięte w edytorze.

Jeśli chcesz zautomatyzować ten proces, aby przetworzyć w taki sposób, że za każdym razem zapisujesz otwarty plik w edytorze Visual C ++, narzędzie Dos2unix.exe zostanie wywołane, aby usunąć 0x0D S, a następnie użyj następujących makro VBScript:

"Ten dokument jest zwolniony za każdym razem, gdy dokument jest zapisywany w edytorze VC ++. Sub Application_docanceveve (Thedocument)" To zadzwoni do narzędzia użytkownika w menu Narzędzia. "Zmień liczbę w zależności od tego, co masz. Domyślnie Tylko" Masz 6 narzędzi w menu Narzędzia, więc narzędzie Dos2unix będzie 7. ExecuteCommand "Usertool7" End Sub

Ten kod VBScript będzie działał tylko wtedy, gdy masz otwarte pliki do edytora Visual C ++. Jest to jedyny sposób, aby zadzwonić do pliku EXE z makra VBScript (nie można przenieść do parametrów). Zamiast tego możesz napisać i będzie bardziej elastyczny. Zadzwoń do narzędzia "Dos2unix.exe" z dodatku bez konieczności dodania go do Usługa menu.

W Visual C ++ za pomocą makr dostarczonych przez VBScript:

  1. Otwórz istniejący plik z rozszerzeniem.DSM lub utwórz jeden.
  2. Włóż kod wcześniej pokazany w pliku.
  3. W Visual C ++, wykonaj następujące kroki.
    1. Z Usługa Menu kliknij Oprawa.
    2. naciśnij przycisk Pliki makro i dodatki Patka.
    3. naciśnij przycisk Przegląd Pobierz plik.DSM zawierający makro. Raz w pliku.DSM został wybrany w Przeglądokno dialogowe pojawi się plik Suplementy i makra Lista plików za pomocą wybranego pola wyboru obok niego.
    4. naciśnij przycisk Blisko kontynuować.

Teraz, jeśli otworzysz plik w edytorze Visual C ++ i zapisz z pliku Plik Menu zwane makro i wszystkie 0x0D S zostaną usunięte z otwartego pliku. Ponieważ wpływa na dowolny plik, zaoszczędź od teraz i stosować do każdego projektu, aby otworzyć w przyszłości, upewnij się, że wyłączam makro Usługa Menu z pomocą Oprawa (Usuń zaznaczenie pola wyboru obok makro).