2013-01-06 10 views
6

Il manuale autoconf suggerisce di utilizzare AS_IF anziché if, ma non menziona m4_if. Dovrebbe essere preferito anche AS_IF oltre m4_if?autoconf: dovrei usare sempre AS_IF su if e m4_if?

La sezione "Limitations of Builtins" del manuale dice di usare AS_IF per la sua portabilità, ma lo AC_REQUIRE description dice di usarlo per espandere le macro richieste.

Devo sempre usare AS_IF? La risposta sembra essere sì, ma poi di nuovo vedo if e m4_if utilizzato in altre macro. Quando è ok non usare AS_IF?

risposta

2

Sono stato confuso su questo perché non mi rendevo conto della differenza fondamentale tra if/AS_IF e m4_if. I normali e AS_IF hanno i loro condizionali valutati quando l'utente esegue lo script, ad esempio configure. Al contrario, m4_if ha il suo condizionale valutato durante l'espansione della macro, ad esempio autoreconf.

/AS_IF influisce sul flusso dello script. m4_if influisce sul contenuto dello script.

Questo sembra ovvio ora, ma all'inizio non l'ho capito. Spero che questo aiuti qualcun altro.

+0

È possibile accettare la propria risposta, BTW. –

+1

Questo non dice quando usare 'se' e ​​quando' AS_IF'. –

+0

Penso che il consenso sia quello di usare sempre 'AS_IF' su' se', perché si ottengono quotazioni migliori, ecc. – tprk77

2

L'altro vantaggio di AS_IF è che quando si espande, tutte le macro richieste dalle macro nei rami vengono espanse prima del test.

Vedere the manual.