|
一个和宏有关的问题。简化成这样:
#include <stdio.h>
#define FOO(T, DATA) ((T)({ \
T m_data = DATA ; \
m_data; \
}))
struct _m{
int id;
char name[16];
};
int main(){
struct _m mm={1, "shellex"};
printf("id = %d\n", FOO(struct _m, mm).id);
printf("name = %s\n", FOO(struct _m, mm).name);
return 0;
}
编译连接,输出:
shellex@sx_linux:~/Desktop$ ./main
id = 1
段错误 (core dumped)
请问大家是为什么呢?
把
printf("name = %s\n", FOO(struct _m, mm).name);
改成
printf("name = %c\n", FOO(struct _m, mm).name[0]);
是没问题的嗯 |
|