C/Program: Różnice pomiędzy wersjami

Z Wikibooks, biblioteki wolnych podręczników.
< C
Usunięta treść Dodana treść
m kolejność
Linia 1: Linia 1:
=Typy programów=
Typy programów wg liczby składników:
* [[C/Pierwszy_program|proste]] (tylko 1 plik źródłowy)
* złożone
==Program prosty==
[[C/Pierwszy program|Pierwszy program]]

== Program złożony ==

Składniki programu złożonego:
* główny plik programu (źródłowy): <code>main.c</code>
* dodatkowe pliki źródłowe (moduły = jednostki translacji)
** tylko c
** c i h
* [[C/Biblioteki|biblioteki]] = pliki nagłówkowe (.h) oraz pliki binarne (skompilowane)
=Składniki programu =
=Składniki programu =
* znaki
* znaki
Linia 26: Linia 11:
** źródłowe (c lub h)
** źródłowe (c lub h)
** binarne
** binarne

==Jaki jest minimalny program ? ==

<source lang=c>
void main(){}
</source>

Jeśli skompilujemy :

gcc m.c -Wall

to otrzymujemy ostrzeżenie :

<source lang=bash>
m.c:1:6: warning: return type of ‘main’ is not ‘int’ [-Wmain]
void main(){}
</source>

Rozwiązanie: zmienić typ wyniku funkcji main na int<ref>[https://stackoverflow.com/questions/204476/what-should-main-return-in-c-and-c stackoverflow question: what-should-main-return-in-c-and-c]</ref>

<source lang=c>
int main(){

return 0;}
</source>

Teraz program kompiluje i wykonuje się bez problemów



==Zestaw znaków i kodowanie ==
==Zestaw znaków i kodowanie ==
Linia 157: Linia 114:
| <code>[[Pamięć lokalna wątku|_Thread_local]]</code>
| <code>[[Pamięć lokalna wątku|_Thread_local]]</code>
|}
|}
=Typy programów=
Typy programów wg liczby składników:
* [[C/Pierwszy_program|proste]] (tylko 1 plik źródłowy)
* złożone
==Program prosty==
[[C/Pierwszy program|Pierwszy program]]
===Jaki jest minimalny program ? ===

<source lang=c>
void main(){}
</source>

Jeśli skompilujemy :

gcc m.c -Wall

to otrzymujemy ostrzeżenie :

<source lang=bash>
m.c:1:6: warning: return type of ‘main’ is not ‘int’ [-Wmain]
void main(){}
</source>

Rozwiązanie: zmienić typ wyniku funkcji main na int<ref>[https://stackoverflow.com/questions/204476/what-should-main-return-in-c-and-c stackoverflow question: what-should-main-return-in-c-and-c]</ref>

<source lang=c>
int main(){

return 0;}
</source>

Teraz program kompiluje i wykonuje się bez problemów



== Program złożony ==

Składniki programu złożonego:
* główny plik programu (źródłowy): <code>main.c</code>
* dodatkowe pliki źródłowe (moduły = jednostki translacji)
** tylko c
** c i h
* [[C/Biblioteki|biblioteki]] = pliki nagłówkowe (.h) oraz pliki binarne (skompilowane)


=Źródła=
=Źródła=

Wersja z 16:15, 12 lis 2017

Składniki programu

  • znaki
  • słowa
    • kluczowe C
    • pozostałe (niekluczowe)
      • nazwy zmiennych i stałych[1]
      • komentarze
    • dyrektywy preprocesora[2]
  • procedury (podprogramy)
  • pliki
    • źródłowe (c lub h)
    • binarne

Zestaw znaków i kodowanie

w programie

Zestaw znaków dopuszczalnych w programie [3]

  • A - Z ( duże litery, ang. capital letters)
  • a -z ( małe litery, ang. small letters)
  • 0 - 9 ( cyfry, ang. digits)
  • znaki specjalne ( ang. Special Characters)
    • space . , : ; ' $ " (
    • # % & ! _ {} [] () $ & |
    • + - / * = ? < >

jest fragmentem znaków ASCII i UTF-8 (ASCII jest podzbiorem UTF-8).

Z punktu widzenia kodowania plik źródłowy w c jest to tekst zakodowany w ASCII[4] (UTF-8[5]) z rozszerzeniem c lub h. Oczywiście w c można przetwarzać tekst zakodowany w innych systemach, jak UTF[6]

Problemem mogą być:

w nazwach (identyfikatorach)

Identyfikator ( nazwa) :

  • zmiennej
  • funkcji
  • struktury


Jest to podzbiór zbioru znaków dopuszczalnych w programie:[8]

  • A - Z ( duże litery, ang. capital letters)
  • a -z ( małe litery, ang. small letters)
  • 0 - 9 ( cyfry, ang. digits)
  • Underscore(_)

Użycie pozostałych znaków w nazwie zmiennej jest niedozwolone. Np. użycie

 font-size // dopuszczalne w svg

powoduje błąd.

Słowa kluczowe

Lista słów kluczowych języka C na podstawie normy ISO/IEC 9899:2011 (C11).

auto extern short while
break float signed _Alignas
case for sizeof _Alignof
char goto static _Atomic
const if struct _Bool
continue inline switch _Complex
default int typedef _Generic
do long union _Imaginary
double register unsigned _Noreturn
else restrict void _Static_assert
enum return volatile _Thread_local

Typy programów

Typy programów wg liczby składników:

  • proste (tylko 1 plik źródłowy)
  • złożone

Program prosty

Pierwszy program

Jaki jest minimalny program ?

void main(){}

Jeśli skompilujemy :

 gcc m.c -Wall

to otrzymujemy ostrzeżenie :

m.c:1:6: warning: return type of ‘main’ is not ‘int’ [-Wmain]
 void main(){}

Rozwiązanie: zmienić typ wyniku funkcji main na int[9]

int main(){

	return 0;}

Teraz program kompiluje i wykonuje się bez problemów


Program złożony

Składniki programu złożonego:

  • główny plik programu (źródłowy): main.c
  • dodatkowe pliki źródłowe (moduły = jednostki translacji)
    • tylko c
    • c i h
  • biblioteki = pliki nagłówkowe (.h) oraz pliki binarne (skompilowane)

Źródła

  1. studytonight.com: c keywords-and-identifier
  2. Można napisać program bez dyrektyw preprocesora. Np.: void main(){}, ale wtedy mamy ostrzeżenie: . Zwykle nawet mały program zawiera przynajmniej 1 dyrektywę.
  3. C's Character Set by Richard Mobbs
  4. stackoverflow question: ascii-english-text-ascii-c-program-text-question
  5. 21st-century-c-2nd-edition: the_encoding_for_c_code
  6. Unicode in C and C++: What You Can Do About It Today by Jeff Bezanson
  7. wikipedia:en:Newline#In_programming_languages
  8. c4learn : c-variable-nameing-rules
  9. stackoverflow question: what-should-main-return-in-c-and-c