PDA

Visualizza la versione completa : [c/c++] accettare argomenti di una funzione con la PIPE |


xnavigator
21-04-2010, 18:18
ragazzi ho visto che (per esempio la open) si possono passare diverse opzioni all'apertura di un file seperando i vari FLAG con |

open("/etc/protocols", O_RDONLY|O_CLOEXEC)

mi spiegate come si implementa una funzione del genere? (per gestire le varie opzioni passate?)

oppure se ci sono metodi migliori per gestire funzioni che possono accettare come paramtri molte variabili di "settaggio"? grzie

oregon
21-04-2010, 18:23
Per darti una risposta basta che pensi al significato di |

xnavigator
21-04-2010, 19:26
Originariamente inviato da oregon
Per darti una risposta basta che pensi al significato di |

operatore bitwise or...

ma non ancora non ci arrivo all'implementazione
:fagiano:


l'unica cosa che posso pensare è che la funzione abbia una variabile di modalità binaria settata per esempio con tutti 0 cosi
000000

dove ogni zero corrisponde ad un flag, cosi se nella terza posizione viene messo un 1 allora significa che la modalità corrispondente alla terza posizione deve essere attivata..


le variabili passate alla funzione devono essere binarie con un solo 1 nella posizine giusta..

cosi per esempio per attivare il terzo flag bisogna passare la variabile binaria "100"

però mi sembra una cosa troppo laboriosa oO

ogni volta bisognrebbe gestire tutti i vari shift della variabile per prendere i settaggi dei vari flag e inoltre bisgona creare delle costanti per avere il valore binario corrispondente..

cioè è un macello... non ci sono metodi più veloci per gestire fuznioni con molti argomenti?
:fagiano:

oregon
21-04-2010, 21:11
Originariamente inviato da xnavigator
operatore bitwise or...

E non pipe (la shell del so non c'entra ...)


ma non ancora non ci arrivo all'implementazione

Non hai nozioni di algebra booleana (lo dico sempre che la teoria è fondamentale ...)



però mi sembra una cosa troppo laboriosa

E perchè mai?


ogni volta bisognrebbe gestire tutti i vari shift della variabile per prendere i settaggi dei vari flag

No ... esiste l'operatore bitwise and ( & ) per questo ... vedi sempre algebra booleana ...


e inoltre bisgona creare delle costanti per avere il valore binario corrispondente..

che esistono ...


cioè è un macello... non ci sono metodi più veloci per gestire fuznioni con molti argomenti?

No ...

MacApp
21-04-2010, 21:16
Originariamente inviato da xnavigator

però mi sembra una cosa troppo laboriosa oO


guarda che son cose che si fanno normalmente anche in php:
http://it.php.net/manual/en/function.error-reporting.php


error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

mica eri un programmatore php tu?
http://it.php.net/manual/en/language.operators.bitwise.php
;-)

xnavigator
21-04-2010, 21:36
Originariamente inviato da MacApp
guarda che son cose che si fanno normalmente anche in php:


infatti non ho detto che non sapevo utilizzarle... volevo solo sapere come avrei dovuto implementarle :D




e inoltre bisgona creare delle costanti per avere il valore binario corrispondente..


che esistono ...


che esistono in che senso?
le devo creare io ad hoc se le voglio utilizzare in una mia funzione :fagiano:

oregon
21-04-2010, 21:51
Originariamente inviato da xnavigator
le devo creare io ad hoc se le voglio utilizzare in una mia funzione :fagiano:

Certo ... per una tua funzione, sicuramente ...

Volevo solo dire che le costanti da utilizzarsi per molte funzioni che lavorano in questo modo, sono tutte valorizzate nei file include ... in windows.h (ma anche in altri header) ne trovi tantissime ...

Loading