Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Nothing Phone (4a) Pro cambia pelle: l'alluminio unibody sostituisce la trasparenza integrale, portando una solidità inedita. Sotto il cofano troviamo uno Snapdragon 7 Gen 4 che spinge forte, mentre il display è quasi da top dig amma. Con un teleobiettivo 3.5x e la Glyph Matrix evoluta, è la prova di maturità di Carl Pei. C'è qualche compromesso, ma a 499EUR la sostanza hardware e la sua unicità lo rendono un buon "flagship killer" in salsa 2026
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro
Con Midnight, Blizzard tenta il colpaccio: il player housing sbarca finalmente su Azeroth insieme a una Quel'Thalas ricostruita da zero. Tra il dramma della famiglia Ventolesto e il nuovo Prey System, ecco com'è la nuova espansione di World of Warcraft
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Nuova frontiera per i robot tagliaerba, con Ecovacs GOAT O1200 LiDAR Pro che riconosce l'ambiente in maniera perfetta, grazie a due sensori LiDAR, e dopo la falciatura può anche rifinire il bordo con il tagliabordi a filo integrato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-04-2003, 11:12   #1
mjk
Member
 
Iscritto dal: Mar 2002
Messaggi: 153
[C] Numero variabile di argomenti

Ciao a tutti, ho un problema di "eleganza formale" in C (non C++, badate bene). Devo scrivere una sorta di API, e ho tre funzioni praticamente uguali a meno del numero di parametri che devono prendere:

void f1(double x);
void f2(double x, unsigned y);
void f3(double x, unsigned y, double z);

f1 non è che f2 con y = 0, e f2 è f3 con z qualsiasi.

Voglio "consensarle" in un'unica funzione per semplificare la vita a chi dovrà usare queste funzioni. In C++ penso che avrei potuto usare:

void f(double x, unsigned y = 0, double z = 0.0);

In C ho fatto:

#include <stdarg.h>

void f(double x, ...) {
va_start(ap, x);
y = va_arg(ap, unsigned);
z = va_arg(ap,double);
va_end(ap);
etc...
}

Il problema è che se la chiamo con (a è un double)

f(a);

y e z assumono un valore qualsiasi! Io voglio accorgermi se y non è stato passato e in tale caso porre y = 0.

P.S.: soluzione indesiderata il passaggio, come primo argomento, del numero di argomenti che si passano: in tale caso tanto vale usare tre funzioni diverse f1,f2,f3.

Scusate per il post lungo e per la domanda assurda.
Ciao e grazie,

::mjk::
mjk è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2003, 11:29   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Sinceramente non l'ho mai usate, ma credo che basti controllare se ap == NULL...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2003, 13:13   #3
mjk
Member
 
Iscritto dal: Mar 2002
Messaggi: 153
Grazie del consiglio, ho provato ma non funziona. Dopo aver dichiarato, con va_start, qual'è l'ultimo argomento "certo", ap punta alla locazione di memoria immediatamente successiva, non curandosi se in essa sono scritti o meno gli argomenti opzionali. Mi sa che non c'è alcun metodo per effettuare l'operazione che voglio io...
mjk è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2003, 13:22   #4
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Re: [C] Numero variabile di argomenti

Quote:
Originally posted by "mjk"


Il problema è che se la chiamo con (a è un double)

f(a);

y e z assumono un valore qualsiasi! Io voglio accorgermi se y non è stato passato e in tale caso porre y = 0.
Se non ricordo male non hai modo di capire direttamente quanti e quali argomenti sono stati passati. E' tuo compito stabilirlo (ad esempio le funzioni di output del C guardano la stringa per inferire i parametri passati ).

Secondo me se ti interessa solo l'eleganza , e' meglio se ti tieni le tre funzioni separate. Risultera' anche piu' semplice l'utilizzo da parte dell'utente visto che gli eviterai errori subdoli (ad esempio se chiami la funzione con secondo e terzo parametro scambiati il compilatore non se ne accorge)
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2003, 13:54   #5
mjk
Member
 
Iscritto dal: Mar 2002
Messaggi: 153
Mi sa che hai proprio ragione... grazie mille a tutti!

bye,

::mjk::
mjk è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico Recensione Nothing Phone (4a) Pro: finalmente in...
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro WoW: Midnight, Blizzard mette il primo, storico ...
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere? Recensione Samsung Galaxy S26+: sfida l'Ultra, m...
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
L'Intelligenza Artificiale ora può...
Il data center del futuro secondo Huawei...
Spesa a domicilio senza conducente: robo...
Satoshi Nakamoto ha finalmente un volto?...
La Corea del Sud taglia fuori i bus elet...
GoPro taglia ancora: licenziato il 23% d...
Muse S Athena: la fascia che ti legge ne...
PS5 Pro e PSSR 2.0: tutti i giochi compa...
Dimensity 9600 Pro promette prestazioni ...
BMW i7 2026 adotta celle cilindriche Gen...
Cyberpunk 2077 si aggiorna su PS5 Pro co...
Valve porta Steam Link su Vision Pro per...
Google Maps: ufficiali 3 novità c...
TikTok punta tutto sull'Europa: un milia...
OnePlus Nord 6 ufficiale: arriva con una...
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: 19:01.


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