Visual Studio syntax highlighting colors this word blue as if it were a keyword or reserved word. I tried searching online for it but the word "array" throws the search off, I get mostly pages explaining what an array is. What is it used for?
It isn't. At least not in standard C/C++.
Now you might well ask the reason "entry" was a reserved word in C in K&R but not in C99 - somebody thought they might add the feature at some point, but eventually decided against it.
It's not a reserved word under ISO standards. Microsoft's C++/CLI defines array in the cli namespace, and Visual Studio's syntax highlighting will treat it as a reserved word. This usage would be considered a vendor extension and not a part of any international C or C++ standard.
ISO C99 Keywords:
auto enum restrict unsigned break extern return void case float short volatile char for signed while const goto sizeof _Bool continue if static _Complex default inline struct _Imaginary do int switch double long typedef else register union
ISO C++98 Keywords:
and double not this and_eq dynamic_cast not_eq throw asm else operator true auto enum or try bitand explicit or_eq typedef bitor export private typeid bool extern protected typename break false public union case float register unsigned catch for reinterpret_cast using char friend return virtual class goto short void compl if signed volatile const inline sizeof wchar_t const_cast int static while continue long static_cast xor default mutable struct xor_eq delete namespace switch do new template
In what edition? A Google search for "c++ reserved words" shows no such usage.
I routinely use "array" in sample code.
It isn't?
What source identifies "array" (or "entry") as key words in C++? A quick Google search gives several lists of C++ reserved words; non list "array" or "entry". G++ doesn't seem to recognize them either.
VS 2005 colors it blue as if it was reserved. Microsoft couldn't be wrong, could they? :)
Apparently it's used in C++/CLI.
Visual C++ Language Reference: "The array keyword lets you create a dynamic array that is allocated on the common language runtime heap."
Does Visual Studio highlight class names from the standard library, like std::vector, in a similar way? If yes, then array is defined there as well I guess
Later: yes, it seems std::array is a proposed addition to the 0x standard
Visual Studio never bothered with defining different C++ grammars for their pretty printer. ISO C++, VC++, C++/CLI, or just old C - all share the same grammar. So, names like array and interface are all treated as if they were keywords.
It would also be quite hard for the pretty printer to spot the C++ dialect used in foo.cpp. You'd need to compile the code for that. Currently the pretty printer can operate on tokens, which means it only needs to parse the code.
I am also having a problem with either a problem in my head or an inconsistency in C++ reserved keywords list (or, maybe a compiler (gcc 3.4.4 on cygwin, launched by g++ -Wall) bug?).
Here's a useless program which does not compile on my gcc 3.4.4:
#include <iostream>
using namespace std;
struct link {
link* next;
};
void smth(link* L) {
}
int main() {
return 0;
}
Compiler issues the following error messages:
.cpp:6: error: variable or field 'smth' declared void
.cpp:6: error: 'L' was not declared in this scope
.cpp:6: error: expected ',' or ';' before '{' token
Clearly, none of these errors makes sense. So, after going crazy for about twenty minutes, I changed "link" to "node":
#include <iostream>
using namespace std;
struct node {
node* next;
};
void smth(node* L) {
}
int main() {
return 0;
}
And voila! the program compiles. "link" is not a reserved word according to the lists I could google.
Is it only me not knowing C++ or is it also (not excluding the first) something wrong with the compiler?