Это указатель на функцию. Вы получаете сообщение SEGMENTATION FAULT, потому что пытаетесь сделать вызов функции, адрес которой недействителен (NULL
).
В соответствии с вашим конкретным образцом функция не должна возвращать значение (void
) и не должен получать никаких параметров ()
.
Это должно работать:
void a()
{
printf("Hello!");
}
int main(int arcg, char** argv)
{
m_process = a;
m_process(); /* indirect call to "a" function, */
// Hello!
}
Указатели функций обычно используются для обработки некоторых форм обработки событий в C. Это не единственное его использование, хотя ...
Обновление protobuf-gradle-plugin к версии 0.8.10 решило мою проблему. Замените свой существующий protobuf
classpath 'gradle.plugin.com.google.protobuf:protobuf-gradle-plugin:0.8.10'
Это происходит главным образом из-за библиотек, которые являются устаревшими. Для проверки на новые обновления вручную необходимо перейти к
, Анализируют> "Выполненный Контроль По имени"
, Который должен быть достаточно. Другая опция состоит в том, чтобы выполнить gradle обновление зависимости с помощью
./gradlew dependencyUpdates
, который представит отчет как это:
:dependencyUpdates
------------------------------------------------------------
: Project Dependency Updates (report to plain text file)
------------------------------------------------------------
The following dependencies are using the latest milestone version:
- com.github.ben-manes:gradle-versions-plugin:0.15.0
The following dependencies have later milestone versions:
- com.google.auto.value:auto-value [1.4 -> 1.4.1]
- com.google.errorprone:error_prone_core [2.0.19 -> 2.0.21]
- com.google.guava:guava [21.0 -> 23.0-rc1]
- net.ltgt.gradle:gradle-apt-plugin [0.9 -> 0.10]
- net.ltgt.gradle:gradle-errorprone-plugin [0.0.10 -> 0.0.11]
...
обновление сервисов Google на уровне проекта build.gradle
решило мою проблему.
После обновления:
dependencies {
...
classpath 'com.google.gms:google-services:4.3.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}