Esiste un modo in C e C++ per far sì che le funzioni che restituiscono void vengano valutate in ordine non specificato?Valutazione delle funzioni non ordinata per le funzioni restituite void
So che gli argomenti delle funzioni vengono valutati in modo non specificato in modo per le funzioni non tornare vuoto questo può essere utilizzato per valutare le funzioni in ordine non specificato:
codice#include <stdio.h>
int hi(void) {
puts("hi");
return 0;
}
int bye(void) {
puts("bye");
return 0;
}
int moo(void) {
puts("moo");
return 0;
}
void dummy(int a, int b, int c) {}
int main(void) {
dummy(hi(), bye(), moo());
}
legale C e C++ compilato da un conforme il compilatore può stampare hi
, bye
e moo
in qualsiasi ordine. Questo è non comportamento indefinito (demoni nasali non sarebbe valido), c'è semplicemente più di uno, ma meno di infinite uscite valide e un compilatore conforme non deve nemmeno essere deterministico in ciò che produce.
C'è un modo per farlo senza i valori di ritorno fittizi?
Precisazione: Questa è una domanda astratta su C e C++. Un fraseggio originale migliore potrebbe essere stato esiste un contesto in cui l'ordine di valutazione della funzione non è specificato per le funzioni che restituiscono il nulla? Non sto cercando di risolvere un problema specifico.
Se i metodi sono 'void' perché si li utilizza come parametro? – John3136
Il mio obiettivo non è usarli come parametro ma valutarli in ordine non specificato. – Praxeolitic
@Gyapti Il caso d'uso è curiosità. – Praxeolitic