Глядя на заголовочный файл OpenCL я вижу:C/C++ опережающее объявление в ЬурейеМ
typedef struct _cl_context * cl_context;
Я понимаю, что cl_context
является указателем на вперед объявленной структуру _cl_context
.
С точки зрения дизайнера библиотеки, какие преимущества делают это снова:
typedef struct _cl_context cl_context;
это просто так API вызовы могут принимать cl_context
вместо cl_context*
? Но если это так, почему бы не просто сделать:
typedef void *cl_context;
Спасибо, я не рассматривал случай, когда пользователь может попытаться передать мусор и принять его как пустоту *. – jklontz