Linux kernel の wireless.c で .header_type とか,ドットで始まる変数名?がある件について
http://twitter.com/k_morihisa/status/9006163842
Twitter / Morihisa Kazuaki: Linux kernel の wireless.c で .header_type とか,ドットで始まる変数名?がある.謎
Linux-Kernel Archive: 2.6.18-git9 wireless fixes break ipw2200 association to AP with WPAのパッチとかみると、たしかにこんな断片のC言語のソースコードがでてくる。
@@ -242,24 +234,24 @@ [SIOCSIWESSID - SIOCIWFIRST] = { .header_type = IW_HEADER_TYPE_POINT, .token_size = 1, - .max_tokens = IW_ESSID_MAX_SIZE, + .max_tokens = IW_ESSID_MAX_SIZE + 1, .flags = IW_DESCR_FLAG_EVENT, }, [SIOCGIWESSID - SIOCIWFIRST] = { .header_type = IW_HEADER_TYPE_POINT, .token_size = 1, - .max_tokens = IW_ESSID_MAX_SIZE, + .max_tokens = IW_ESSID_MAX_SIZE + 1, .flags = IW_DESCR_FLAG_DUMP, }, [SIOCSIWNICKN - SIOCIWFIRST] = { .header_type = IW_HEADER_TYPE_POINT, .token_size = 1, - .max_tokens = IW_ESSID_MAX_SIZE, + .max_tokens = IW_ESSID_MAX_SIZE + 1, }, [SIOCGIWNICKN - SIOCIWFIRST] = { .header_type = IW_HEADER_TYPE_POINT, .token_size = 1, - .max_tokens = IW_ESSID_MAX_SIZE, + .max_tokens = IW_ESSID_MAX_SIZE + 1, }, [SIOCSIWRATE - SIOCIWFIRST] = { .header_type = IW_HEADER_TYPE_PARAM, @@ -346,8 +338,8 @@ .max_tokens = sizeof(struct iw_pmksa), }, }; -static const unsigned standard_ioctl_num = (sizeof(standard_ioctl) / - sizeof(struct iw_ioctl_description)); +static const int standard_ioctl_num = (sizeof(standard_ioctl) / + sizeof(struct iw_ioctl_description)); /* * Meta-data about all the additional standard Wireless Extension events
http://twitter.com/takesako/status/9016296481 でも返事しましたが、
つまり、こういうこと?
#include <stdio.h> typedef struct x{ char a; char b; } X; int main(void) { const X x[] = { [2] = { .a=69, .b=0, }, [0] = { .a=65, .b=66, }, [1] = { .a=67, .b=68, }, }; printf("%s\n",x); }
→ 実行結果:ABCDE