Subscribed unsubscribe Subscribe Subscribe

SylpheedをMinGWでビルドするときのコンパイルエラー(interface)

sylpheedを手元のMinGW環境でビルドしてみようとしてエラーになった。
gcc -Eで試してみたらソースの変数名interfaceがなぜかstructに変更されていた。

static struct Interface {
 GtkWidget *checkbtn_always_show_msg;
 GtkWidget *checkbtn_always_mark_read;
 GtkWidget *checkbtn_openunread;
 GtkWidget *checkbtn_remember_lastsel;

 GtkWidget *checkbtn_openinbox;
 GtkWidget *checkbtn_openinbox_startup;
 GtkWidget *checkbtn_change_account_on_folder_sel;
 GtkWidget *checkbtn_immedexec;

 GtkWidget *checkbtn_show_trayicon;
 GtkWidget *checkbtn_minimize_to_tray;
 GtkWidget *checkbtn_tray_toggle_window;
} struct;

なんでこんなことになるんだろうと調べてみたら、
C:\MinGW\include\basetyps.hで#define interface _COM_interfaceと定義されていて、
最終的に_COM_interfaceがstructに再定義されるためのようです。


basetyps.hはMinGWのみなので、Linux環境だと問題にならないようです。


以前ビルドを試してみたときはコレひっかからなかったかは不明。
ただ手元の環境が腐っている可能性がなきにしもあらず。