Avatar billede hoegge Nybegynder
21. august 2001 - 21:45 Der er 6 kommentarer

Switch-case indentation problem i MS VC++ 6

Når man \'nester\' flere switch sætninger inden i hinanden i MSVC 6, bliver indentationen underlig:
main()
{
    int a,b;
   
    switch (a)
    {
    case 0:
        break;
    case 1:
        switch (b)
        {
        case 0:
           
            break;
        case 1:
           
            break;
        case 2:
            break;
        default:
           
            break;
        }
        case 2:
            break;
        default:
            break;
           
    }

Som man kan se bliver case2: og default, der hører til a\'s switch sætning rykket ind på niveau med b\'s switch sætning - hvilket vel ikke er rigtigt. Hvis man sætter {} om b\'s switch sætning ser det fint ud, men det er jo lidt træls (og grimt):

main()
{
    int a,b;
   
    switch (a)
    {
    case 0:
        break;
    case 1:
        {
            switch (b)
            {
            case 0:
                break;
            case 1:
               
                break;
            case 2:
                break;
            default:
                break;
            }
        }
    case 2:
        break;
    default:
        break;
    }
}

Er der nogen forslag til løsning? Er det en kendt bug?

MVH
Høgge
Avatar billede futter2 Nybegynder
21. august 2001 - 23:28 #1
Jeg bruger ikke MSVC, men Borland Builder her bestemmer du selv hvordan du vil have din syntax, jeg vil tro at du kan det samme i MSVC (opsætning af automatik eller slå den fra).

Sådan ville det se ud hvis jeg lavede det samme i BCB++

main()
{
int a,b;
   
    switch (a) {
        case 0:
            break;
        case 1: {
            switch (b) {
                case 0:
                    break;
                case 1:
                    break;
                case 2:
                    break;
                default:
                    break;
                }
            }
        case 2:
            break;
        default:
            break;
        }
}
Avatar billede futter2 Nybegynder
21. august 2001 - 23:29 #2
og sp uden \'{\'
main()
{
int a,b;
   
    switch (a) {
        case 0:
            break;
        case 1:
            switch (b) {
                case 0:
                    break;
                case 1:
                    break;
                case 2:
                    break;
                default:
                    break;
                }
        case 2:
            break;
        default:
            break;
        }
}
Avatar billede jpk Nybegynder
22. august 2001 - 08:27 #3
Du kan jo arrangere din kode som du vil, det er jo kun ment som en effektiv hjælp...
Grunden til at det sker er at der er forskel på hvordan man logisk vil arrangere henholdsvis switch-kode og andet kode. Da switch-statements ikke forekommer så ofte (sammenlignet med andet kode), har man altså valgt en pæn formatering af \'det andet\' kode!
Avatar billede hoegge Nybegynder
22. august 2001 - 21:54 #4
Ja man kan selvfølgelig gøre det manuelt, men det er jo ikke problemet. Hvad er forskellen på hvordan man logisk vil arrangere switch-kode og andet kode (jpk)? Det kan jeg ikke se. Når noget kommer ind i {} rykker det in , når det møder } skal det rykke ud igen - let. Men det gør editoren ikke medmindre man sætter {} om indholdet, når indholdet i en case er en ny switch. Så det må vel være en bug, som ingen kan løse? Right?
Avatar billede jpk Nybegynder
23. august 2001 - 09:01 #5
Når man taster \":\" efter den første case, rykker linien en tab til venstre. Hvis man bare lige trykker Ctrl+Z derefter, bliver indrykningen som jeg selv foretrækker det...
Avatar billede reficul Nybegynder
12. september 2001 - 21:21 #6
Jeg har oplevet det samme, men VC++.NET har rettet det (Og en masse andet)!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester