Torna indietro   Hardware Upgrade Forum > Software > Programmazione

AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS è il principale operatore di servizi cloud al mondo e da tempo parla delle misure che mette in atto per garantire una maggiore sovranità alle organizzazioni europee. L'azienda ha ora lanciato AWS European Sovereign Cloud, una soluzione specificamente progettata per essere separata e distinta dal cloud "normale" e offrire maggiori tutele e garanzie di sovranità
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Xiaomi ha portato sul mercato internazionale la nuova serie Redmi Note, che rappresenta spesso una delle migliori scelte per chi non vuole spendere molto. Il modello 15 Pro+ punta tutto su una batteria capiente e su un ampio display luminoso, sacrificando qualcosa in termini di potenza bruta e velocità di ricarica
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR ha finalmente lanciato il suo nuovo flagship: Magic 8 Pro. Lo abbiamo provato a fondo in queste settimane e ve lo raccontiamo nella nostra recensione completa. HONOR rimane fedele alle linee della versione precedente, aggiungendo però un nuovo tasto dedicato all'AI. Ma è al suo interno che c'è la vera rivoluzione grazie al nuovo Snapdragon 8 Elite Gen 5 e alla nuova MagicOS 10
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-04-2003, 12: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, 12: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, 14: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, 14: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, 14: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


AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Vast prosegue la costruzione della stazi...
Chiarito cosa è successo al satel...
Il TAR annulla Bologna Città 30. ...
Laptop con chip NVIDIA da marzo? Emergon...
Costruito in casa, più veloce di ...
Il nuovo Galaxy Book 6 Pro costa il 25% ...
C'è un boom del mercato dei data ...
OVHcloud annuncia la disponiiblità...
Il Wi-Fi 7 ha un nuovo re: da ASUS arriv...
In arrivo l'auto "Frankenstein"...
Chip NVIDIA H200 in Cina? 'Come vendere ...
iPhone 16 torna super conveniente: ora c...
Offerte Amazon pazzesche: tech, smartpho...
Ubisoft annuncia l'arrivo dei 60 fps per...
Infratel Italia: ecco la nuova mappa del...
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: 22:49.


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