Just nu i M3-nätverket
Gå till innehåll

Exkludera inkludering i C


Gäst George M

Rekommendera Poster

Det var ett tips! Testa att u t e s l u t a pre-processordirektivet!

 

Då skulle det bli många kompileringsfel i de C-program jag skrev en gång i tiden.

Länk till kommentar
Dela på andra webbplatser

Jag håller helt klart med Cecilia i det här fallet, många fel kommer man få. Plus ett väldigt begränsat program då jag vill minnas att stdio är standard input/output på samtliga system som din C-kompilator är anpassad för. Så du kommer inte kunna läsa in inmatningar från tangentbord, skriva till skärm och eventuellt inte heller läsa och skriva till fil.

 

Så då har du ett program som du varken kan ge data till eller få data ifrån och vad är syftet med ett sådant program egentligen.

Länk till kommentar
Dela på andra webbplatser

Gäst George M

Bjuder på följande kod:

*

void main()

{

int c1, c2;

c1 = 5; /* 00000101 */

c2 = c1 << 3; /* 00101000 */

printf("Resultat: %d %d", c1, c2);

}

--- Kompilerar och länkar ---

D:\Program\Dos\Cc tcc -nout mf\bitshift

Turbo C++ Version 1.01 Copyright

© 1990 Borland International

mf\bitshift.c:

Turbo Link Version 3.01 Copyright

© 1987, 1990 Borland International

Available memory 421696

*

--- Kör bitshift.exe ---

D:\Program\Dos\Cc out\bitshift

Resultat: 5 40

*

Kommentarer:

- Skapade filer: bitshift.obj (281 Byte), bitshift.exe (6 kB)

- Inga varningar. Inga kompileringsfel.

Länk till kommentar
Dela på andra webbplatser

Ja, det kan ju gå med så där små program. De program som jag höll på med var på många tusen rader uppdelat på många källkodsfiler och med flitigt användande av olika bibliotek som krävde att man inkluderade deras .h-filer. Det var väl vanligt att man behövde inkludera minst 10 .h-filer i en källkodsfil.

 

Typ det som skrivs om Word for Windows version 1.1a från 1991:

 

The 7 MB zip file contains 1021 files in 33 folders. In the root directory there is a “readme” file that briefly explains the rest of the contents. Most of it is source code in C, but there are also text documents, x86 assembler-language source files, executable tools, batch files, and more.

http://www.computerhistory.org/atchm/microsoft-word-for-windows-1-1a-source-code/

Länk till kommentar
Dela på andra webbplatser

printf funktionen är definierad i stdio.h, vilket betyder att din kompilator antagligen har inkluderat den automatiskt utan att säga något till dig.

 

Man kan argumentera för och emot om det är bra att kompilatorn gör sådant per automatik, men man kan absolut inte anta att alla kompilatorer beter sig på samma sätt. Så det finns en ganska stor risk att bara för att det fungerar för dig med din Borland kompilator så kanske det inte fungerar för någon annan som kör gcc till exempel.

Länk till kommentar
Dela på andra webbplatser

Gäst George M

Borde kanske justera trådrubriken till "Att inkludera i C

ibland överflödigt". Om du nu '.M' har taggarna uttåt så

varför inte testa med din gcc-kompilator i stället för att

spotta ut dig fördömningar. Ni i publiken också: testa

och redovisa! Hoppas ni inte är lika allvarstyngda och

trista som 'Stormuffin' i era kommentarer. Tråden var ur-

sprungligen menad som en upplysning, inte menad som någon

absolut sanning. Något som kan vara k u l att pröva på.

Hört talas om kommentarer som "Oh, det låter intressant!"

Eller: "Uppfriskande, det hade jag ingen aning om!"?

Länk till kommentar
Dela på andra webbplatser

Ja du, efter att femtielva gånger har råkat ut för kompileringsfel därför att jag har missat att inkludera en av alla nödvändiga .h-filer så vet jag att man vid normal programutveckling behöver inkludera många .h-filer och det låter inte vare sig intressant eller uppfriskande när någon påstår motsatsen.

 

Du får kalla mig negativ, allvarlig, sur, irriterad eller vad som helst men jag är bara realist.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...