Domanda

http://clang.llvm.org/docs/BlockLanguageSpec.txt

sembra davvero cool.

Tuttavia,

  1. Non capisco esso.
  2. non vedo esempi di esso.
  3. Non vedo esempi di idee difficile da esprimere in C ++ come è, ma banale per esprimere in blocchi.

Qualcuno mi illumini su questo?

È stato utile?

Soluzione

blocchi sono, essenzialmente, un modo per passare codice e portata intorno come dati. Sono conosciuti in altre lingue come chiusure e funzioni anonime.

Ecco un articolo con maggiori dettagli ed esempi di codice.

Altri suggerimenti

NanoTech già collegato a una spiegazione di blocchi. Quanto a come questo si riferisce a C ++ lasciatemi dire la mia opinione personale: Questa estensione è non utile in C ++. Ecco perché:

Per quanto riguarda il tipo di riferimento di blocco: Abbiamo già "funzioni polimorfiche" che possono portare qualche stato in giro, vedere boost :: funzione , tr1 :: funzione . C ++ includerà una versione lucida di questo nella sua prossima libreria standard. Il vantaggio rispetto "C Blocchi" è che non c'è bisogno di pasticciare con le cose come Block_copy e Block_release. Queste funzioni polimorfiche oggetti sono abbastanza intelligente per fare la propria gestione della memoria.

Per quanto riguarda il blocco letterale sintassi: E 'una sintassi bello che ti permette di mettere il codice in cui essa "appartiene" senza la necessità di codice standard molto. Ma lo stesso vale per il suo C ++ contatore parte: C ++ 0x lambda . Ma caratteristica lambda C ++ 0x consente inoltre di utilizzare gli oggetti lambda in cicli interni stretti senza costi elevati di prestazioni di chiamate di funzione a causa della possibile messa in linea.

Dato che C ++ 0x lambda può essere utilizzato anche in situazioni in cui le prestazioni sono un problema e std :: funzione è più facile da gestire w.r.t. gestione della memoria l'aggiunta di "C Blocchi" a C ++ sembra ridondante. "Blocchi C" sembrano essere più su misura per lingue che non supportano modelli o distruttori.

Sono fondamentalmente solo termine di Apple per chiusure / funzioni anonime. Come nota Nikolai, sono come si utilizza Grand Central Dispatch di eseguire più funzioni in parallelo (utilizzando quindi più di 1 core), senza doversi preoccupare di threading e di chiusura.

Per quanto ho capito questa estensione è per Grand Central Dispatch di Apple quadro. I blocchi sono piccoli programmabili / entità coda-in grado di essere potenzialmente eseguiti in parallelo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top