Ich habe bekannt geschachtelte Funktionen werden als Erweiterung in gcc unterstützt, aber ich kompiliere eine c-Datei verschachtelte Funktion mit einem Fehler verwendet. Fehler Massage ist wie folgt:Es gibt einen Fehler beim Kompilieren einer c-Datei verwendet eine verschachtelte Funktion
test.cpp:6:40: error: function definition is not allowed here double
square (double z) { return z * z; }
Und verschachtelte Funktion ist wie folgt:
foo (double a, double b)
{
double square (double z) { return z * z; }
return square (a) + square (b);
}
Mein Betriebssystem ist Mac OS und Version 10.12.6
Als ich gcc -v
eingeben in iTerm2, die Antwort lautet wie folgt:
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 9.0.0 (clang-900.0.38)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
http://en.cppreference.com/w/c/language/function_definition: * "Im Gegensatz zur Funktionsdeklaration sind Funktionsdefinitionen nur im Dateibereich erlaubt (es gibt keine verschachtelten Funktionen)." * – UnholySheep
clang unterstützt keine verschachtelten Funktionen, Sie brauchen gcc. –
Apples "gcc" ist nur ein Alias für 'clang'. – molbdnilo