Es ist meine Überzeugung, dass dieser Code:Mein Fehler oder Fehler im Intel Compiler? sizeof ein nicht-statisches Element Fehler
#include <stdio.h>
struct foo {
char array[1024];
};
int main() {
fprintf(stderr, "sizeof(foo::array): %zd\n", sizeof(foo::array));
}
Ist gültig C++. g ++ kompiliert es einfach mit -ansi -pedantic. Doch mit Intels icc 12.1.3 Kompilieren erhalte ich:
error #288: a nonstatic member reference must be relative to a specific object
Ist es mein Fehler oder icc tut das Falsche re: die C++ spec?
Das ist [N2253] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers /2007/n2253.html), Teil von C++ 11. –
Clang ++ denkt, es ist auch ein Fehler: ': 8: 62: Fehler: ungültige Verwendung von nicht-statischen Datenelement 'Array' fprintf (stderr," sizeof (foo :: array):% zd \ n ", sizeof (foo :: array)); ~~~~~^~~~~ ' –
GCC standardmäßig auf C++ 11 jetzt, vielleicht ist das das Problem? Wahrscheinlich müssen Sie anderen Compilern mitteilen, C++ 11 zu verwenden, möglicherweise mit "-std = C++ 11". –