我遇到了一些有趣的事情,我认为应该是有效的。首先:
编译器/版本
$ gcc --version
gcc (Debian 4.7.2-5) 4.7.2
编译器选项和警告消息。
$ gcc -c warn.c -o warn.o
warn.c:11:5: warning: initialization from incompatible pointer type [enabled by default]
warn.c:11:5: warning: (near initialization for ‘foo.exec’) [enabled by default]
我想知道为什么 'Foo()' 与 'exec' 不兼容。(添加评论以希望完全清晰)
typedef struct Thing
{
void (*exec)(char *abc);
} Thing;
// ME: I don't mess with this.. I make const, K?
void Foo(const char *abc)
{
(void) abc;
}
// GCC: LOL, nope! probably u messed up.
Thing foo = { Foo };