Home

ITA - Appunti Cpp 001 - Keywords

linux debian lmde cpp

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:

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

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