在C和C++中有沒有辦法使返回的函數返回void以未指定的順序進行評估?無返回函數的函數評估返回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
。這是而不是未定義的行爲(鼻惡魔不會有效),只有不止一個,但少於無限的有效輸出和一個兼容的編譯器甚至不需要確定它的產生。
有沒有辦法做到這一點,沒有虛擬的返回值?
澄清:這是一個關於C和C++的抽象問題。更好的原始措辭可能是有沒有任何上下文中函數評估順序未指定返回void的函數?我並不是想解決一個特定的問題。
如果方法'void'爲什麼你會使用它們作爲參數? – John3136 2014-12-03 04:40:04
我的目標不是將它們用作參數,而是以未指定的順序對它們進行評估。 – Praxeolitic 2014-12-03 04:40:35
@Gyapti用例是好奇心。 – Praxeolitic 2014-12-03 04:41:21