struct Foo * declares a new type (namely struct Foo) if there is no declaration of struct Foo already visible in the current scope; otherwise it is just a pointer to an element of the already declared type "struct Foo". There is a gotcha with the first case: struct Foo is only declared in its scope; a later declaration of struct Foo in an enclosing scope declares a different type. This happens in hwcontext_vulkan.h if it is included before hwcontext.h, because some declarations of struct AVHWDeviceContext and struct AVHWFramesContext have function prototype scope. Compilers warn about this (during checkheaders): ‘struct AVHWDeviceContext’ declared inside parameter list will not be visible outside of this definition or declaration Fix this by including hwcontext.h.
Unified · Split
| @@ -26,6 +26,7 @@ · 25 unmodified lines | ||
| 26 | 26 | |
| 27 | 27 | #include "pixfmt.h" |
| 28 | 28 | #include "frame.h" |
| 29 | +#include "hwcontext.h" | |
| 29 | 30 | |
| 30 | 31 | typedef struct AVVkFrame AVVkFrame; |
| 31 | 32 | |