Есть ли способ в C и C++ вызвать функции, возвращающие void для оценки в неуказанном порядке?Оценка неупорядоченной функции для возвращаемых функций
Я знаю, что аргументы функции вычисляются в произвольном порядке, так и для функций, не возвращая недействительного это может быть использовано для оценки этих функций в произвольном порядке:
кода#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());
}
Юридического C и C++, составленного конформным компилятор может распечатать hi
, bye
и moo
в любом порядке. Это не неопределенное поведение (nasal demons недействительно), существует просто более одного, но менее бесконечного допустимых выходов, а совместимый компилятор не должен даже быть детерминированным в том, что он производит.
Есть ли способ сделать это без возвращаемых значений фиктивных данных?
Уточнение: Это абстрактный вопрос о C и C++. Возможно, лучше исходная фразировка была в каком-либо контексте, в котором порядок оценки функции не указан для функций, возвращающих void? Я не пытаюсь решить конкретную проблему.
Если методы 'void' почему бы вы использовать их в качестве параметр? – John3136
Моя цель - не использовать их в качестве параметра, а оценивать их в неуказанном порядке. – Praxeolitic
@Gyapti прецедент любопытство. – Praxeolitic