Traducere, inclusiv un fișier sursă C la altul? Online, inclusiv un fișier sursă C în altul? Din codul sursă la modulul executabil



Puteți activa corect fișierele FIES.C OR.CPP în alte fișiere sursă. În funcție de mediul dvs. IDE, de obicei, puteți preveni legarea dublă prin vizualizarea proprietăților fișierelor sursă pe care doriți să le activați, de obicei, faceți clic dreapta pe ele și faceți clic pe Proprietăți și debifați caseta / Verificați compilarea / linkul / excluderea de la asamblare sau orice altă opțiune. poate. Sau nu puteți activa fișierul în proiect, astfel încât mediul IDE nici măcar nu știe că există și nu va încerca să o compileze. Și cu fișierele de machiaj, tocmai tocmai nu ați pus fișierul în ea pentru compilație și layout.

Editați: Îmi pare rău, am dat un răspuns în loc de un răspuns la alte răspunsuri :(

În funcție de mediul dvs. de asamblare (nu specificați), puteți detecta că funcționează exact așa cum doriți.

Cu toate acestea, există multe medii (atât IDE, cât și multe machine prelucrate manual), care așteaptă compilarea * .c - Dacă se întâmplă acest lucru, este posibil să întâlniți erorile de linker datorită duplicării caracterelor.

De regulă, această practică ar trebui evitată.

Dacă trebuie să aveți nevoie să activați sursa (și, de obicei, ar trebui evitată), utilizați un alt fișier pentru fișier.

Am crezut că voi împărtăși situația când echipa mea a decis să permită fișiere. Arhitectul nostru constă în principal din module care sunt dezlănțuite prin sistemul de mesaje. Acești agenți de gestionare a mesajelor sunt disponibili public și provoacă multe funcții locale de funcționare statice pentru a-și îndeplini activitatea. Problema a apărut când încercam să obțin o acoperire pentru cazurile noastre unice de testare, deoarece singura cale Implementarea acestui cod de implementare a fost indirect printr-o interfață comună de mesaje. Cu unele caracteristici ale lucrătorului în genunchi din stivă sa dovedit a fi un coșmar pentru a asigura o acoperire adecvată.

Activarea fișierelor.c ne-a oferit ocazia de a ajunge la șurub în mașină, am fost interesați de testarea.

Activarea fișierului C la alt fișier este legală, dar nu este adecvată dacă cu siguranță nu știți de ce o faceți și ce încercați să realizați.
Sunt aproape încrezător că, dacă publicați un motiv aici, potrivit căruia întrebarea dvs. va fi comunicată comunității, veți găsi o altă modalitate adecvată de a vă atinge obiectivul (acordați atenție "aproape", deoarece este posibil ca această decizie, având în vedere contextul).

Apropo, mi-a lipsit a doua parte a întrebării. Dacă fișierul C este activat într-un alt fișier și, în același timp, inclus în proiect, probabil că veți întâmpina problema duplicatorului caracterelor, de ce leagă obiectul, adică aceeași funcție va fi definită de două ori (dacă nu sunt statice ).

Limba C nu interzice acest tip de #include, dar unitatea de traducere rezultată trebuie să fie validă C.

Nu știu ce program folosiți fișierul S.PRJ. Dacă folosiți ceva de genul "Make" sau Visual Studio sau altceva, asigurați-vă că instalați lista de fișiere care trebuie compilate fără acest lucru care nu poate fi compilat independent.

trebuie să adăugați un titlu similar cu acest lucru.

#Include.

notă: Ambele fișiere trebuie plasate într-un singur loc.

Puteți utiliza compilatorul GCC din Linux pentru a lega două fișiere cu o ieșire. Să presupunem că aveți două fișiere C, dintre care unul este "principal.c", iar celălalt este "suport.c". Astfel, comanda pentru conectarea acestor două

Gcc principal.c support.c -o principal.out

Aceste două fișiere vor fi asociate cu o ieșire principală. Pentru a începe comanda de ieșire va fi

./main.out.

Dacă utilizați funcția Main.c, care este declarată în fișierul Support.c, atunci trebuie să o declarați în cea mai mare parte utilizând clasa externă de stocare.

Extensia de fișiere nu contează pentru majoritatea compilatoarelor C, deci va funcționa.

Cu toate acestea, în funcție de setările fișierului sau al proiectului, fișierul C inclus poate genera un fișier de obiect separat. Când este legată, acest lucru poate duce la dublu anumite caractere.

Acest tip de întrebare pe care l-am întrebat recent un coleg, începând să programez în Si. Și am crezut că este un motiv bun să împărtășesc înțelegerea mea despre această problemă. Deoarece și programatorii experimentați nu au întotdeauna puncte de vedere similare asupra acestui lucru.

Parțial aceasta este o chestiune de gust, deci cine este interesat ca mine, bun venit la pisică.

În ciuda faptului că "întregul adevăr" despre H-FIES este conținut în secțiunea corespunzătoare a descrierii preprocesorului GCC, permiteți-i câteva explicații și ilustrații.

Deci, dacă este literal, fișierul antet (h-fișier) este un fișier care conține o declarație și o definiție macro destinată utilizării în mai multe fișiere sursă (fișiere C). Îl ilustruim.

Este ușor de observat că funcțiile 1 și 2, precum și Macro 2, sunt menționate în ambele fișiere. Și deoarece, includerea fișierelor de antet duce la aceleași rezultate ca copierea conținutului în fiecare fișier SI, putem face următoarele:

În acest fel, pur și simplu am alocat o parte comună a două fișiere și am plasat-o în fișierul antet.
Dar este fișierul antetului cu interfața în acest caz?

  • Dacă trebuie să folosim funcționalitatea că funcțiile 1 și 2 sunt implementate în altă parte, atunci da
  • Dacă Macro 2 este destinat numai pentru utilizarea în fișierele Unit1.c și Unit2.c, atunci nu se află în fișierul de interfață
Mai mult, trebuie să avem cu adevărat două fișiere SI pentru a implementa interfața definită în fișierul antet? Sau este unul?
Răspunsul la această întrebare depinde de detaliile implementării funcțiilor de interfață și de la locul lor de implementare. De exemplu, dacă faceți diagrame mai detaliate, puteți trimite o opțiune atunci când funcțiile de interfață sunt implementate în diferite fișiere:


Acest exemplu de realizare duce la coduri înalte, teste scăzute și complexitate reutilizați astfel de module.
Pentru a nu avea astfel de dificultăți, ia în considerare întotdeauna un fișier C și un fișier de antet ca un singur modul. In care,
  • fișierul antet conține numai declarațiile de funcții, tipuri, macrocomenzi care fac parte din interfața acestui modul.
  • Fișierul C, la rândul său, trebuie să conțină implementarea tuturor funcțiilor declarate în fișierul H, precum și tipurile private, macrocomenzile și funcțiile necesare pentru implementarea interfeței.
Astfel, dacă am avut ocazia să implementăm codul pe care s-a aplicat diagrama de mai sus, aș încerca să obțin următoarele (capătul lui _C și _H în numele fișierelor adăugate datorită imposibilității de a folosi punctul în instrumentul pe care l-am folosit Creați diagrame):


Diagrama arată că, de fapt, avem de-a face cu două module independente, fiecare dintre acestea având propria interfață sub forma unui fișier antet. Acest lucru face posibilă utilizarea numai acea interfață care este cu adevărat necesară în acest caz particular. În plus, aceste module pot fi testate independent unul de celălalt.
Cititorul, probabil, a observat că Macro 2 din fișierul antet a revenit din nou ca o copie în ambele fișiere SI. Desigur, nu este foarte convenabil să sprijine. Dar, de asemenea, pentru a face această parte macro a interfeței nu este corectă.
În astfel de cazuri, prefer să fac un fișier separat care conține tipuri și macro-uri necesare de mai multe fișiere SI.

Sper că am reușit să identific acele entități care trebuie plasate în fișierele de antet. Pe lângă, arată diferența dintre interfețe și fișiere care conțin declarații și macro-uri necesare mai multor fișiere SI.

Vă mulțumim pentru atenția acordată materialului.

Fișiere sursă

Textul programului SI poate fi împărțit în mai multe fișiere sursă. Dosar original. reprezintă fisier textcare conține fie întregul program, fie partea sa. La compilarea programului sursă, fiecare dintre componentele fișierelor sale sursă trebuie să fie compilate separat și apoi asociate cu alte fișiere de către linker. Fișierele sursă separate pot fi combinate într-un singur fișier sursă, compilate ca un singur întreg, prin Directiva Preprocessor #Include..

Fișierul sursă poate conține orice combinație holistică de directive, indicând compilatorul, anunțurile și definițiile. Sub integritate se înțelege că astfel de obiecte ca definiții ale funcțiilor, structurile de date sau un set de directive convenționale de compilare trebuie să fie complet amplasate într-un singur fișier, adică nu pot începe într-un singur fișier, ci continuă în cealaltă.

Fișierul sursă nu trebuie să conțină operatorii executați. Uneori este convenabil să plasați definiții variabile într-un singur fișier și în alte fișiere pentru a utiliza aceste variabile prin AD. În acest caz, definițiile variabilelor devin ușor accesibile pentru căutare și modificare. Din aceleași considerații, denumite constante și determinări macro sunt de obicei colectate în separați fișierele și să le includă prin Directiva Preprocessor #Include. În aceste fișiere sursă în care sunt necesare.

Notă Compilatorul se aplică, de obicei, numai pentru secțiunile individuale ale fișierului sursă. Acțiunile specifice ale compilatorului specificate de instrucțiuni sunt determinate de implementarea specifică a compilatorului de limbă SI.

În exemplul următor, programul sursă constă din două fișiere sursă. Funcții principal. și max. Prezentate în fișiere separate. Funcţie principal. utilizează funcția max. în procesul de execuție.

/ * Fișierul sursă 1 - Main * /

extern int max (int, int); / * funcția caracteristică * /

principala () / * definiția funcției * /

int w \u003d unul, x \u003d două, y \u003d trei;

/ * Fișierul sursă 2 - max * /

int max (a, b) / * definiție funcția * /

În prima funcție de fișier sursă max. declarată, dar nu este definită. O astfel de funcție AD se numește preliminară; Permite compilatorul să controleze apelul la funcție înainte de a fi definit. Definiția funcției principal. Conține apeluri de funcții max..

Rândurile începând cu simbolul # sunt directivele preprocesorului. Directivele indică preprocesorul asupra necesității de a înlocui în primul fișier sursă al celui doi, trei identificatori la valorile corespunzătoare. Domeniul directivei nu se aplică celui de-al doilea dosar sursă.

Programarea Kozlov Irina Sergeevna

27. Fișierele sursă C ++

27. Fișierele sursă C ++

Programul de pe C ++ include cel mai adesea număr mare. Fișierele sursă din fiecare dintre acestea sunt descrieri ale tipurilor, funcțiilor, variabilelor și constantelor. Astfel încât numele să poată fi utilizat în diferite fișiere sursă pentru a se referi la un obiect specific, acesta trebuie să fie descris ca un extern. De exemplu:

extern dublu sqrt (dublu); Extern Instruitor Cin;

Cea mai ușoară modalitate de a asigura consistența fișierelor sursă este premisele acelorași descrieri în fișiere individuale care sunt numite fișiere (sau manual), apoi activează, adică copia, aceste fișiere antet în toate fișierele în care sunt necesare aceste descrieri. De exemplu, dacă descrierea SQRT este localizată în fișierul antet pentru funcțiile matematice standard ale matematică și este necesar să se extragă rădăcină pătrată De la 4, ar trebui să aplicați programul:

Deoarece fișierele de antet obișnuite constau dintr-un număr mare de fișiere sursă, nu există descrieri care nu trebuie repetate.

În comanda Activare include, numele fișierului este amplasat în paranteze unghiulare, de exemplu, se referă la un fișier cu un astfel de nume într-un director standard (de obicei / USR / Include / CC); Fișierele stocate în alte locuri sunt menționate prin aplicarea de nume situate în ghilimele duble. De exemplu:

#Include "Math1.h" #include "/usr/bs/math2.h"

porniți MATH1H din directorul curent al utilizatorului și Math2.h din directorul / USR / BS.

Arătăm cum am putea determina tipul de flux de ieșire din Ostream. Pentru a simplifica sarcina, presupuneți că tamponarea este definită tip Sam Sambof. Stilul SHATERBUF este definit în locul în care este localizat și definiția de Ostream prezentă. Tipul de tip definit de utilizator specifică datele necesare pentru a reprezenta obiectul acestui tip și un număr mare de operații pentru a lucra cu aceste obiecte. Definiția constă din două părți: o zonă închisă (privată) a părții în care informațiile utilizate numai de către dezvoltatorul său și partea deschisă (publică), care este interfața de tip utilizator.

Din cartea programului și a fișierelor Windows Autor Klimov A.

Fișierele DBX în fișierele cu extensia DBX sunt stocate Outlook Express.. În aceste fișiere, numită banca de mesagerie, există scrisori, grupuri de știri etc. Dacă doriți, puteți copia aceste fișiere la transportatorul de informații pentru a transfera date pe alt computer.

De la programarea cărților Autor Kozlova Irina Sergeevna.

Inf-Fișiere În acest articol, vom analiza ceea ce este un fișier INF, cum să lucrați cu alte fișiere și registru cu acesta, creați comenzi rapide, executați programe etc. După cum știți, pentru un produs software mai mult sau mai puțin grave necesită de obicei special

Din cartea Win2K FAQ (v. 6.0) Autor Shashkov Aleksey

12. Comentarii. Fișierele sursă Comentarii sunt un set de caractere ignorate de compilator. Dar la acest set Simbolurile suprapuse anumite limitări. În interiorul unui set de caractere reprezentând un comentariu nu poate fi caractere specialeacea

Din cartea Microsoft Visual C ++ și MFC. Programare pentru Windows 95 și Windows NT Autor Frolov Alexander Vyacheslavich.

27. C ++ Fișiere sursă Programul C ++ include cel mai adesea un număr mare de fișiere sursă, fiecare dintre acestea fiind descrieri ale tipurilor, funcțiilor, variabilelor și constantelor. Astfel încât numele să poată fi utilizat în diferite fișiere sursă pentru referire la un obiect specific, acesta

Din carte Unix: interacțiunea proceselor Autor Stevens William Richard.

Fișierele de numeroase solicitări deschid o secțiune cu fișiere utile pentru W2K. Secțiunea este alcătuită din două părți, primele patch-uri oficiale de la Microsoft (nu toate, dar numai cele care par mai importante pentru noi) și a doua parte, unde toate dosarele menționate în FAQ vor intra, doar utilitate,

De la cartea de programare și de programare pentru calculator personal Autorul butoaielor C. O.

Din cartea Compass-3D pentru studenți și elevi. Desen, informatică, geometrie Autor Bolshakov Vladimir.

Din cartea nedocumentată și puțin cunoscuți de capabilități Windows XP Autor Klimenko Roman Alexandrovich.

Fișierele sursă ale textului programului SI pot fi împărțite în mai multe fișiere sursă. Fișierul sursă este un fișier text care conține întregul program sau parte a acestuia. La compilarea programului sursă, fiecare dintre componentele fișierelor sale sursă

Din programul de programare pentru Linux. Abordare profesională de Mitchell Mark.

Apendicele 2 Datele sursă pentru modelarea solidă a statului

Din cartea Unix: Dezvoltarea aplicațiilor de rețea Autor Stevens William Richard.

Apendicele 3 Datele sursă pentru modelarea familiilor

Din cartea Wiki-guvern [modul în care tehnologiile pot face o putere mai bună, democrația este mai puternică, iar cetățenii - mai influenți] autorul noului pariu.

Fișierele CPL din mai multe paragrafe anterioare ați învățat aproape toate calculele teoretice necesare pentru a lucra cu programul Rundll32.exe. Acum ei vor fi listați oportunitățile care acest program Poate oferi utilizatorului. Să începem cu descrierea

Din carte Unix - Mediul de programare universal de Pike Rob.

1.5.4. Textele sursă ale Linux sunt un sistem open source, nu? Judecătorul suprem, determinând modul în care funcționează sistemul sursă Sistemul însuși. Pentru fericirea noastră, este disponibilă gratuit. În distribuția existentă Linux, pot exista textele sursă ale întregului sistem și toate

Din cartea autorului

A.3.5. Textele sursă ale programului Calculator în Listing A.3 prezintă textul programului care calculează semnificația expresiilor postfixe. Nexting A.3. (Calculator.c) Partea principală a programului Calculator / * Calculul în format unar. * // * pentru introducerea programului este servită o singură linie

Din cartea autorului

Anexa M Diferite coduri sursă G.1. Fișierul antet UNP.H Aproape fiecare program din această carte începe cu conectarea fișierului antet UNP.H afișat în lista G.1. Acest fișier conectează toate fișierele standard de sistem necesare pentru funcționare.

Din cartea autorului

Din cartea autorului

Apendicele 3 Texte originale Calculator HOC Aceste fișiere conțin toate codurile din "Mediul de programare Unix", de Brian Kernighan și Rob Pike (Hall Prentice, 1984, ISBN 0-13-937681-X). O distribuție separată HOC6 conține orice remediere pe care am aplicat-o; Versiunea din acest fișier este de la carte.Copyright © Lucent Technologies, 1997. Toate drepturile rezervate de utilizare, copiere, modificare și distribuire a acestui software și documentația sa pentru

suport.microsoft.

Când schimbați fișierele sursă în Visual C ++ și salvați-le, șirurile trebuie să completeze caracterele "CR / LF" [simbolul de returnare a transportului, translația rândului]. În sistemele Unix, șirurile sunt finalizate utilizând "LF". Astfel, atunci când vizualizați fișierele care au fost modificate în Grupul Windows din sistemele Unix, caracterele setate "^ M" pot apărea în linii. Acest lucru se întâmplă numai atunci când utilizați editorul nu știe cum să interpreteze fișier Windows.. Visual C ++ Puteți deschide fișiere, în corzi care se termină cu crearea Unix LF. Dacă schimbați acest fișier și salvați-l de la Visual C ++ și apoi este salvat în formatul Windows. (Veți vedea CR / LF și nu LF, care a fost anterior în sistem).

Acest articol descrie procedurile de salvare a fișierului modificat creat pe platforma Windows într-un format care poate fi utilizat în sistemele Unix.

NOTĂ: Visual C ++. NET IDE conține funcții disponibile pentru a salva fișierul în format Unix. Într-un mediu de dezvoltare integrat, salvați fișierul folosind Salvează ca..., selectați Salvare din lista derulantă Salvați cu codare ...și faceți clic pe butonul THN da. Selectați din lista derulantă Codificarea rândului Unix (LF)și apoi faceți clic pe O.K.

Poate fi folosit pasii urmatori Pentru a crea o aplicație de consolă Win32, un proiect care convertește un fișier care conține "CR / LF" pentru a finaliza șirul pentru "LF":

  1. Pentru a crea un nou proiect Win32 gol cu \u200b\u200bnumele Dos2unix utilizând aplicațiile Console Win32.
  2. De Fişier MENU, CLICK. Nouși apoi faceți clic pe Fișiere. Tab.
  3. Alege Fișierul sursă C / C ++ Și introduceți numele noului fișier dos2unix.cpp.
  4. Introduceți următorul cod în dos2unix.cpp:

    #Include. #Include. #Include. Utilizarea spațiului de nume STD; Int principal (int argc, char * argv) (dacă (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. De Clădire MENU, CLICK. Crearea dos2unix.exe. Pentru a crea un fișier exe.

Poate fi necesar să verificați acest fișier exe pentru a vedea dacă funcționează corect. Pentru a face acest lucru, deschideți fișierul în editorul binar Visual C ++ atunci când selectați Deschis într-un grup Fişier Meniu selectând dos2unix.ex, setare Deschide ca Kom. Binarși apoi făcând clic pe Deschis. De exemplu, dacă fișierul conține "HellocrlfWorld", datele binare de fișiere (hexazecimal) vor arăta astfel:

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

Aceasta este echivalentă cu:

Buna ziua
Pace

În promptul de comandă, executați comanda dos2unix.exe . Apoi, deschideți fișierul în editorul binar Visual C ++. Veți vedea că 0x0d s este șters. Până când schimbați fișierul și salvați-l în Visual C ++ 0x0d, nu va apărea.

Acest lucru poate fi utilizat în combinație cu modelul de automatizare Visual C ++ automatizați întregul proces. Simplu Scenariul Microsoft Visual Basic poate fi scris pentru a apela acest fond, dar mai întâi trebuie să adăugați Serviciu Meniul este după cum urmează:

  1. De Serviciu MENU, CLICK. Setareși apoi faceți clic pe Serviciu Tab.
  2. Specificați numele, cum ar fi Dos2unix și specificați calea completă către fișierul Dos2unix.exe din Echipă Câmp de editare.
  3. Setați pentru argument, $ (fișier nume) $ (Fileext).
  4. Specificați directorul sursă $ (WKSPDIR) (specificați propria cale).

Pentru a verifica programul, deschideți fișierul în editorul Visual C ++, apoi de la Serviciu Lansați meniul Dos2unix. mijloace. Veți vedea că toate caracterele sale CR au fost șterse în editor.

Dacă trebuie să automatizați acest proces pentru a procesa astfel încât de fiecare dată când salvați fișierul deschis în editorul Visual C ++, instrumentul DOS2UNIX.EXE este apelat la eliminarea 0x0D S, apoi utilizați următorul VBScript Macro:

"Acest document este concediat de fiecare dată când documentul este salvat în editorul VC ++. Sub aplicație_doclumentsave (TheDocument)" Aceasta va apela instrumentul User din meniul Instrumente. "Schimbați numărul în funcție de ceea ce aveți. Implicit doar" aveți 6 instrumente în meniul Instrumente, astfel încât instrumentul Dos2unix va fi al 7-lea. ExecuteCommand "UserTool7"

Acest cod VBScript va funcționa numai dacă aveți fișiere deschise editorului Visual C ++. Aceasta este singura modalitate de a apela un fișier exe de la un macro VBScript (VBScript macro nu poate fi transferat la parametri). Puteți scrie în schimb și va fi mai flexibil. Apelați instrumentul "Dos2unix.exe" din add-in fără a trebui să-l adăugați Serviciu meniul.

În Visual C ++ utilizând macrocomenzile furnizate de VBScript:

  1. Deschideți un fișier existent cu extensie.dsm sau creați unul.
  2. Introduceți codul afișat anterior în fișier.
  3. În Visual C ++, urmați acești pași.
    1. De Serviciu MENU, CLICK. Setare.
    2. apasa butonul Fișiere macro și add-on-uri Tab.
    3. apasa butonul Prezentare generală Descărcați fișierul.dsm conținând macro. Odată ce a fost aleasă în file.dsm Prezentare generalăcaseta de dialog, fișierul va apărea în Suplimente și macrocomenzi Lista fișierelor utilizând caseta de selectare selectată lângă aceasta.
    4. apasa butonul Închide a continua.

Acum, dacă deschideți fișierul în editorul Visual C ++ și salvați din fișier Fişier Meniul numit Macro și toate 0x0D S va fi șters din fișierul deschis. Așa cum afectează orice fișier, salvați de acum încolo și aplicați oricărui proiect de deschidere în viitor, asigurați-vă că opriți macroul de la Serviciu Meniu cu ajutorul Setare (Debifați caseta de selectare de lângă macro).