1

次のようなマクロをCで定義する必要があります。

swap_m(t,x,y)タイプの2つの引数xを交換します。yt

x設定方法とy入力方法がよくわかりませんt。それは本当に簡単かもしれませんが、私はCに不慣れで、これを行う方法がよくわかりません。

4

4 に答える 4

4

試す

#define SWAP(x, y, t) \
    do {
        t __temp = x;
        x = y;
        y = __temp;
    } while (0)

使用

int a = 1, b = 2;
SWAP(a, b, int);
于 2012-09-15T21:06:39.300 に答える
0

memcpyとsizeof演算子を利用できます。

void __swap(void* a, void* b, size_t size)
{
    void* temp= malloc(size);
    memcpy(temp,a,size);
    memcpy(a,b,size);
    memcpy(b,temp,size);
    free(temp);
}

#define swap(a,b) __swap(&a,&b,sizeof(a))
于 2012-09-15T21:14:41.183 に答える
0

タイプをt、たとえばとして渡すだけswap_m(int, x, y)です。

t次に、マクロでタイプの変数を定義できます。

#define swap_m(TYPE, X, Y)    do { TYPE ___tmp = X; X = Y; Y = ___tmp; } while(0)
于 2012-09-15T21:07:33.950 に答える
0

#define SWAP(a,b) { __typeof__(a) temp; temp = a; a = b; b = temp; }

のように: http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Flanguage%2Fref%2Ftypeof_operator.htm

于 2012-09-15T23:29:39.133 に答える