ITA - Appunti Cpp 001 - Keywords
October 2023 (565 Words, 4 Minutes)
Questo post parla della struttura generale di un programma scritto in cpp
Keywords e Identifier
Le “Keywords” sono parole riservate al linguaggio di programmazione che non possono essere usate in alcuna maniera:
alignas (C++11) alignof (C++11) and
and_eq asm atomic_cancel(TM TS)
atomic_commit(TM TS) atomic_noexcept(TM TS) auto
bitand bitor bool
break case catch
char char8_t(C++20) char16_t(C++11)
char32_t(C++11) class compl
concept(C++20) const consteval(C++20)
constexpr(C++11) constinit(C++20) const_cast
continue co_await(C++20) co_returnC++20)
co_yield(C++20) decltype(C++11) default
delete do double
dynamic_cast else enum
explicit export extern
false float for
friend goto if
inline int long
mutable namespace new
noexcept(C++11) not not_eq
nullptr(C++11) operator or
or_eq private protected
public reflexpr register
reinterpret_cast requires(C++20) return
short signed sizeof
static static_assert(C++11) static_cast
struct switch synchronized(TM TS)
template this thread_local(C++11)
throw true try
typedef typeid typename
union unsigned using
virtual void volatile
wchar_t while xor
xor_eq
Oltre alle parole chiave, ci sono identificatori con un significato speciale, che possono essere usati come nomi di oggetti o funzioni, ma hanno un significato speciale in determinati contesti.
final (C++11)
override (C++11)
transaction_safe (TM TS)
transaction_safe_dynamic (TM TS)
import (C++20)
module (C++20)
Direttive del preprocessore
Il preprocessore è eseguito prima della compilazione, translation phases 4. Il risultato del preprocessore è un unico file che contiene tutto il codice del programma in compilazione.
Le direttive di pre-elaborazione controllano il comportamento del preprocessore.
Ogni direttiva occupa una riga e ha il seguente formato:
- inizia con
#
. - una sequenza di:
- un nome di direttiva definito dallo standard seguito dagli argomenti corrispondenti,
- oppure uno o più token di pre-elaborazione in cui il token iniziale non è un nome di direttiva definito dallo standard, in questo caso la direttiva è supportata in modo condizionale con semantica definita dall’implementazione (ad esempio, un’estensione non standard comune è la direttiva #warning che emette un messaggio definito dall’utente durante la compilazione) (fino a C++23)
- oppure nulla, in questo caso la direttiva non ha alcun effetto.
- un’interruzione di riga ( a capo).
Anche le direttive module e import sono direttive di pre-elaborazione. A partire da C++20 le direttive di pre-elaborazione non devono provenire dall’espansione delle macro.
esempi di direttive
- direttive condizionali: #if, #ifdef, #ifndef, #else, #elif, #elifdef, #elifndef (since C++23), and #endif.
- include altri files : #include .
Commenti
I commenti fungono da una sorta di documentazione nel codice. Quando vengono inseriti nel codice vengono ignorati dal compilatore.
// questo è un commento in linea
/*
Questo è un blocco
*/
Funzione Main()
Ogni programma C pensato per l’esecuzione contiene la definizione (non il prototipo) di una funzione denominata main, che è l’inizio designato del programma.
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("argc = %d\n", argc);
for (int ndx = 0; ndx != argc; ++ndx)
printf("argv[%d] --> %s\n", ndx, argv[ndx]);
printf("argv[argc] = %p\n", (void*)argv[argc]);
}
Namespaces
I namespace forniscono un metodo per evitare conflitti di nomi in progetti di grandi dimensioni. Le entità dichiarate all’interno di un namespace vengono inserite in uno scope dedicato, impedendo che vengano scambiate per entità con nomi identici in altri scope.
Riferimenti
Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale Theme Moonwalk