GCCでwchar_tは激しく欠陥品だから使わない方がいいぞ。
例えば

#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <locale.h>

int main(void){
char str[]="あいうえお";
wchar_t w_str[512];
setlocale(LC_ALL,"ja");

int len=mbstowcs(w_str,str,512);
wprintf(L"%s", &w_str[2]);
return 0;
}

このコードは普通なら、3番目の文字から表示する事を期待するが
実際には、
いうえお
と表示される。これでは何の為にワイド文字に変換したのかw
同じコードは、VC++だと正常に表示される。
悪い事は言わん。お前の知識だとハマるだけだから、素直に回避しとけ。