extern OS_LIB vulkan_lib;
Вам нужно extern
, чтобы vulkan_lib
не определено в каждом TU
OS_LIB vulkan_lib = ...
[117 Вам нужно дать определение
Как и оператор приращения ++
, оператор вычитания -
с Указатели также учитывают размер объектов, на которые указывают. В частности, возвращаемый результат - это разница в количестве байтов в значениях указателя, деленная на размер объекта, на который указывает указатель (в вашем примере 12). Таким образом, разница составляет 12 байтов, разделенных на размер 12 или 1.
Если вы действительно хотите узнать разницу, приведите каждый указатель к (char *), а затем к (int), а затем вычтите. Это должно дать вам ответ.
Этот код дает вам абсолютное значение:
printf("%d\n", abs((int)((char*)q) - (int)((char*)p)));
Не забудьте включить math.h.
Изменить: Как указано в комментарии, нам не нужно двойное приведение. Приведение каждого указателя указателя к типу int с последующим вычитанием дает тот же ответ, что и приведенное выше (ненужное) двойное приведение.
printf("%d\n", abs((int)(q) - (int)(p)));