0

我想知道是否可以在 Windows 环境中的typeof等代码块中使用 gcc 扩展。

下面的代码只是为了展示我想如何使用typeof的一个例子。

#include <stdio.h>
#include <stdlib.h>
#define SWAP(x, y) do { typeof(x) temp##x##y = x; x = y; y = temp##x##y; } while (0)

typedef struct Away{
    int var1;
    char cc;
    int array[10];
} somedatatype;

void print_data(somedatatype data){
    printf("var1 = %d\ncc = %c\narray[10] = {",data.var1,data.cc);
    for(int i=0;i<10;i++){
       i!=9 ? printf("%d,",data.array[i]):printf("%d}",data.array[i]);
    }
}

int main(){
    somedatatype data1, data2;
    int a=51,b=42;
    //initialize data1
    data1.var1=2;
    data1.cc='k';
    for(int i=0;i<10;data1.array[i]=5,i++);
    //initialize data2
    data2.var1=3;
    data2.cc='y';
    for(int i=0;i<10;data2.array[i]=4,i++);
    //swap
    SWAP( data1, data2);
    SWAP( a, b);
    //print everything
    printf("data1:\n");
    print_data( data1);
    printf("\ndata2:\n");
    print_data( data2);
    printf("\na = %d\nb = %d\n");
}

PS:我在阅读http://gcc.gnu.org/onlinedocs/gcc/Typeof.html#Typeof时找不到方法

4

1 回答 1

1

从字面上看 - 是的,这是可能的。

这个 gcc 扩展在 GNU C 中可用。用指定它-std=gnu99(因为你也在声明中使用 int,C89 在这里不是一个选项)。

于 2013-12-10T05:05:16.930 回答