结构体排序,按照内部某成员变量排序

某结构体:{.... int num1 ,int num2....} ,按照num1大小排序 ,
如果num1 相同,则再按照num2的大小排,请大家帮忙看下如何比较简单快捷(元素不多不超过10个)

#include <stdio.h>
#include <stdlib.h>
#define n 7

typedef struct
{
    int a;
    int b;
} MyStruct;

int cmpfunc (const void * a, const void * b)
{
    MyStruct v1 = *(MyStruct *)a;
    MyStruct v2 = *(MyStruct *)b;
    if (v1.a == v2.a) return v1.b - v2.b;
    return v1.a - v2.a;
}

int main()
{
    MyStruct a[n];
    a[0].a = 2; a[0].b = 8;
    a[1].a = 7; a[1].b = 1;
    a[2].a = 6; a[2].b = 3;
    a[3].a = 6; a[3].b = 4;
    a[4].a = 3; a[4].b = 9;
    a[5].a = 9; a[5].b = 3;
    a[6].a = 6; a[6].b = 2;
    qsort(a, n, sizeof(MyStruct), cmpfunc);
    for (int i = 0; i < n; i++)
        printf("%d %d\n", a[i].a, a[i].b);
    return 0;
}

2 8
3 9
6 2
6 3
6 4
7 1
9 3