Определение структуры в заголовочном файле для библиотеки и различия при компиляции

У меня есть код, который компилируется в библиотеку (dll, статическую библиотеку и так далее). Я хочу, чтобы пользователь этой библиотеки использовал некоторую структуру для передачи некоторых данных в качестве параметров библиотечной функции. Я подумал об объявлении struct в заголовочном файле API.

  • Безопасно ли это делать, учитывая компиляцию разными компиляторами, выравнивание структур или другие вещи, о которых я не подумал?
  • Потребует ли это использования одного компилятора (и флагов) для библиотеки и ее пользователя?

Несколько замечаний:

  1. Я думал дать пользователю указатель и установить все struct через функции в библиотеке, но это сделает API действительно неудобным для использования.
  2. Этот вопрос относится к C, хотя было бы неплохо узнать, есть ли разница в c++.
6
задан MByD 18 December 2011 в 04:49
поделиться