Как собрать программу без результата приведения calloc в Xcode?

Я пытаюсь использовать calloc в моей программе. С явным приведением он компилируется и работает нормально, но когда я пытаюсь удалить явное приведение malloc Я вижу следующую ошибку:

Присвоение ‘… *’ (он же ‘……. *’) несовместимого типа ‘void *’

Как я могу скомпилировать свой код без явного приведения calloc в Xcode?

1

Решение

Вы пытаетесь скомпилировать ваш код на C как C ++.

Хотя верно то, что некоторый код C также действителен в C ++, вы натолкнулись на пример кода C, который недопустим в C ++.

То есть C ++ не предлагает неявные преобразования в / из void * что С делает.


Вам следует всегда компилируйте код на C, используя компилятор C, по следующим трем причинам:

  • Вам не нужно компилировать код C с помощью компилятора C ++.
  • Вы упускаете лучшие части C ++.
  • Вы пропускаете лучшие части C.

Единственная причина, по которой люди пытаются компилировать код C с помощью компилятора C ++, заключается в том, что они ожидают использования своего кода C в проекте C ++. Однако в этом нет необходимости, поскольку вы обычно можете скомпилировать код C с помощью компилятора C, скомпилировать код C ++ с помощью компилятора C ++ и затем связать их вместе. Например:

gcc -c c_code.c
g++ -c cpp_code.cpp
gcc cpp_library.o c_library.o

В C ++ вообще плохая идея использовать *alloc функции. Те, кто программируют специально на C ++, обычно *alloc использовать.


В C это всегда плохая идея явно приводить void *как ссылка, которую вы предоставили объясняет. Те, кто программирует специально на C, будут трепетать перед ненужным образцом, который потенциально может привести к ошибкам.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]