Można w taki sposób:
#pragma optimize( "g", off )
void func()
{
return;
printf("Hello");
}
#pragma optimize( "g", on )
Wyłączasz tylko część optymalizacji (akurat tą która wywala nieużywany kod, chociaż niestety nie tylko).
Chociaż liczyłem właśnie jednak na jakąś inną możliwość, to i tak dzięki.
ale co ci się w tej nie podoba? - Azarien
Niestety nie działa to z funkcjami inline. Mogę oczywiście (w przypadku __forceinline) kod, który chcę wstawić po return, wstawić bezpośrednio po wywołaniu takiej funkcji, jednak w moim przypadku wpływa to bardzo niekorzystnie na czytelność kodu.
To zamiast tego return
daj if (dupa) return;
z tym, że dupa
będzie ustawiana na true na starcie programu.
To nie takie proste, ja nie chce pominąć instrukcji return.
a sprobuj zrobic wstawke asm ktora zawiera return i uzyj asm volatile zamiast samego asm. Z tym ze stracisz wtedy optymalizacje
Niestety ale pozbycie się C++owego return na rzecz asma za bardzo komplikuje sprawę, a ponadto nie chcę robić dużych zmian w już napisanym kodzie. BTW. w MSVC 2008 wewnętrzny inline asembler chyba nie obsługuje oddzielnego słowa kluczowego volatile.