#include #include typedef struct { char const *s1; char const *s2; } S; typedef void (*callback_fn)(S s, char const *data); #ifdef _MSC_VER #define EXPORT __declspec(dllexport) #else #define EXPORT __attribute__((visibility("default"))) #endif EXPORT extern void ccb(callback_fn fn) { char const *data = "Let's be together, forever, we are never gonna be apart."; fprintf(stderr, "(C) address of data = %p\n", (void*)data); fn( ((S) { "Shall I leave you be, Is it love if I can set you free?", "But even it's not reality,", }), data ); }