C/Program: Różnice pomiędzy wersjami
m →w nazwach zmiennych: indentyfikator |
m →Składniki programu: minimalny |
||
Linia 21: | Linia 21: | ||
*** nazwy zmiennych i stałych<ref>[http://www.studytonight.com/c/keywords-and-identifier.php studytonight.com: c keywords-and-identifier]</ref> |
*** nazwy zmiennych i stałych<ref>[http://www.studytonight.com/c/keywords-and-identifier.php studytonight.com: c keywords-and-identifier]</ref> |
||
*** komentarze |
*** komentarze |
||
** dyrektywy preprocesora<ref>Można napisać program bez dyrektyw preprocesora. Np.: <code>void main(){}</code>. Zwykle nawet mały program zawiera przynajmniej 1 dyrektywę.</ref> |
** dyrektywy preprocesora<ref>Można napisać program bez dyrektyw preprocesora. Np.: <code>void main(){}</code>, ale wtedy mamy ostrzeżenie: . Zwykle nawet mały program zawiera przynajmniej 1 dyrektywę.</ref> |
||
* procedury (podprogramy) |
* procedury (podprogramy) |
||
* pliki |
* pliki |
||
** ź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 == |
Wersja z 17:13, 12 lis 2017
Typy programów
Typy programów wg liczby składników:
- proste (tylko 1 plik źródłowy)
- złożone
Program prosty
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)
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
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[3]
int main(){
return 0;}
Teraz program kompiluje i wykonuje się bez problemów
Zestaw znaków i kodowanie
w programie
Zestaw znaków dopuszczalnych w programie [4]
- 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[5] (UTF-8[6]) z rozszerzeniem c lub h. Oczywiście w c można przetwarzać tekst zakodowany w innych systemach, jak UTF[7]
Problemem mogą być:
- znaki końca linii (ang. line-endings) [8]
- 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:[9]
- 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
|
Ź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ę. - ↑ stackoverflow question: what-should-main-return-in-c-and-c
- ↑ 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