Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro
Le Jabra Evolve3 85 non sono semplicemente cuffie Bluetooth con cancellazione del rumore. Sono un dispositivo professionale pensato per chi trascorre gran parte della giornata in riunione, al telefono o davanti a un assistente basato sull'intelligenza artificiale
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
Abbiamo provato MSI PRO MAX EDGE AI+, un mini-PC professionale progettato per eseguire modelli di intelligenza artificiale in locale, senza dipendere dal cloud. Il sistema abbina il processore AMD Ryzen AI Max+ 395, 128 GB di memoria unificata e un telaio in alluminio da appena 4 litri, con l'obiettivo di offrire capacità di elaborazione elevate in un formato compatto.
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Il nuovo top di gamma vivo punta su un comparto fotografico particolarmente articolato, con un teleobiettivo da 200 megapixel e teleconvertitori esterni capaci di arrivare a 400 mm equivalenti. Lo abbiamo provato a Tenerife, mettendo alla prova fotocamere, prestazioni, autonomia e accessori. Ecco come si è comportato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-06-2009, 04:30   #1
Albitexm
Senior Member
 
Iscritto dal: Jun 2008
Messaggi: 384
[C++] #define funzione

qualcuno ha voglia di spiegarmi bene il significato della funzione "#define" ? in C++
In particolare: in un codice *.cpp che stò studiando, all'inizio del codice, dopo i file d'inclusione sono scritte le seguenti dichiarazioni:
#define NEW
#define T41_INCLUDE
#define T42_INCLUDE
#define T33_INCLUDE
#define T_INDEX64
#define XX 127

#if defined (T_INDEX64) && defined (_MSC_VER)
typedef unsigned __int64 INDEX;
#elif defined (T_INDEX64)
typedef unsigned long long INDEX;
#else
typedef unsigned long INDEX;
#endif

Qualcuno riesce a darmi una spiegazione della funzione pratica di questa porzione di codice
Albitexm è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2009, 03:09   #2
Ikon O'Cluster
Registered User
 
Iscritto dal: May 2009
Messaggi: 300
#define è una direttiva del preprocessore non è una funzione C++. Le direttive del preprocessore le riconosci da # che le precede. Il preprocessore è un programma che viene eseguito prima del compilatore e che esegue delle operazioni sul codice in base a quanto definito nelle direttive. In particolare le operazioni consistono (per farla molto semplice) in semplici operazioni di text editing dei files. Ad esempio #include <miofile.h> all'inizio del file miofile.c copia in tale file alla riga in cui compare la direttiva l'intero contenuto di miofile.h. La direttiva #define serve per definire costanti e macro. Ad esempio:

#define CIAO_STR "ciao bello!"

Fa sì che se io scrivo:

char* str = CIAO_STR;

Allora si avrà che str == "ciao bello!". In particolare però non bisogna pensare a CIAO_STR come una costante. Nel senso che non è equivalente scrivere:

const char* CIAO_STR = "ciao bello!":
char* str = CIAO_STR;

Infatti nel caso della direttiva il preprocessore tradurrà le righe:

#define CIAO_STR "ciao bello!"
char* str = CIAO_STR;

In un'unica riga, ovvero:

char* str = "ciao bello!";

Facendo una banale sostituzione delle occorrenze di CIAO_STR in tutto il codice! Analogamente si può usare #define per definire una macro che si comporta quasi come una funzione, ovviamente con le dovute differenze. La possibilità di usare #define per definire qualcosa può essere utile anche nel caso in cui si voglia effettuare una compilazione condizionale. Le direttive:

#ifdef
#ifndef
ecc...

tra cui anche quelle che hai trovato tu permettono di valutare se una costante/macro è definita o meno. In tal modo se la condizione è verificata allora verrà considerato del codice, altrimenti altro codice. Ciò in genere è utile quando si vuole generare codice portabile. Ad esempio:

// ... codice sempre valido

#ifdef _LINUX_

// ... codice per linux

#else

// ... codice per windows

#endif

// ... codice sempre valido

In tal modo se a monte del codice precedente inserisci la riga

#define _LINUX_

Allora il precompilatore darà in pasto al compilatore un sorgente del tipo:

// ... codice sempre valido
// ... codice per linux
// ... codice sempre valido

Altrimenti:

// ... codice sempre valido
// ... codice per windows
// ... codice sempre valido

In linea di massima funziona così, poi su google puoi cercare qualcosa tipo "direttive preprocessore" per ottenere informazioni più dettagliate e formali, io mi sono limitato a darti solo pochi concetti...
Ikon O'Cluster è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2009, 04:17   #3
Albitexm
Senior Member
 
Iscritto dal: Jun 2008
Messaggi: 384
Quote:
Originariamente inviato da Ikon O'Cluster Guarda i messaggi
# In particolare le operazioni consistono (per farla molto semplice) in semplici operazioni di text editing dei files.
#define CIAO_STR "ciao bello!"
In effetti propio di text editing si deve trattare. Perchè questo file "serve" a
"leggere" delle tablebase. Queste sono in formato compresso.
Come e in che formato siano state compresse non riesco ancora a capirlo.
Ho notato che questa "direttiva" (#define) viene usata spesso nei chess engines. Ma
non è che renda molto "leggibile" questi programmi.
Grazie per il chiarimento
Albitexm è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro Jabra Evolve3 85: le cuffie sia per l'intratteni...
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB...
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista Recensione vivo X500 Pro Max: la fotografia mobi...
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
The Legend of Zelda: Ocarina of Time su ...
Nintendo Switch 2: nessun aumento di pre...
GeForce 8800 GTX, vent'anni dopo: NVIDIA...
GPT-6 Cyber, OpenAI presenta il modello ...
iPhone: il redesign dei 20 anni sarà inn...
OpenAI sfida GitHub acquisendo Pierre Co...
Novità ai vertici di HP: Emma Wal...
Pudu Robotics apre la sede europea : un ...
Meta compra Conductor, la startup degli ...
ASUS ExpertBook A7: disponibile in Itali...
Il film di Naruto si farà davvero: Sony ...
Motorola porta il suono Bose su moto bud...
Motorola presenta moto watch 2 fit: tecn...
motorola signature 27 ufficiale! Il top ...
Dreame L60 Ultra CE a 799€ su Amazon: 35...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:41.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v