C/Program: Różnice pomiędzy wersjami
m →Składniki programu: minimalny |
m kolejność |
||
Linia 1: | Linia 1: | ||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
=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 |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
==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> |
||
|} |
|} |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
=Ź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ć:
- znaki końca linii (ang. line-endings) [7]
- CRLF =
\r\n
(Windows) - LF =
\n
(Linux)
- CRLF =
- kopiowanie i wklejanie
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
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
- ↑ studytonight.com: c keywords-and-identifier
- ↑ Można napisać program bez dyrektyw preprocesora. Np.:
void main(){}
, ale wtedy mamy ostrzeżenie: . Zwykle nawet mały program zawiera przynajmniej 1 dyrektywę. - ↑ C's Character Set by Richard Mobbs
- ↑ stackoverflow question: ascii-english-text-ascii-c-program-text-question
- ↑ 21st-century-c-2nd-edition: the_encoding_for_c_code
- ↑ Unicode in C and C++: What You Can Do About It Today by Jeff Bezanson
- ↑ wikipedia:en:Newline#In_programming_languages
- ↑ c4learn : c-variable-nameing-rules
- ↑ stackoverflow question: what-should-main-return-in-c-and-c