Compile time
In computer science, compile-time, as opposed to run-time, is the time it takes to do certain things in compiling which transforms one programming language into another language.
Typically in compile-time the following tasks can be done: Type-checking, Static binding, enforcing scoping rules, instantiating of templates. Those are also called semantic analysis. Typically the following tasks might not be done: boundary check of an array, dynamic binding.
Compile-time errors are those detected already during compilation, i.e. before even starting execution.
In compile-time, some tasks that cannot be done in a run-time environment can be done. See cross-compiler.
In the case that an interpreter is used there is no separate between compile-time and runtime. A type of error that would otherwise be a compile-time error, will then be detected in the course of executing the program.