C Language Preprocessor #error
Contents |
#error inside of
C Preprocessor Error Directive
a conditional that detects a combination of c preprocessor error macro parameters which you know the program does not properly support. For c programming preprocessor example, if you know that the program will not run properly on a VAX, you might write #ifdef __vax__
C Compiler Preprocessor
#error "Won't work on VAXen. See comments at get_last_object." #endif If you have several configuration parameters that must be set up by the installation in a consistent way, you can use conditionals to detect an inconsistency and report
C Sharp Preprocessor
it with #error. For example, #if !defined(UNALIGNED_INT_ASM_OP) && defined(DWARF2_DEBUGGING_INFO) #error "DWARF2_DEBUGGING_INFO requires UNALIGNED_INT_ASM_OP." #endif The directive #warning is like #error, but causes the preprocessor to issue a warning and continue preprocessing. The tokens following #warning are used as the warning message. You might use #warning in obsolete header files, with a message directing the user to the header file which should be used instead. Neither #error nor #warning macro-expands its argument. Internal whitespace sequences are each replaced with a single space. The line must consist of complete tokens. It is wisest to make the argument of these directives be a single string constant; this avoids problems with apostrophes and the like.
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site About Us Learn more about Stack Overflow the company Business Learn more about hiring developers java preprocessor or posting ads with us Stack Overflow Questions Jobs Documentation Tags Users Badges Ask Question x
Perl Preprocessor
Dismiss Join the Stack Overflow Community Stack Overflow is a community of 4.7 million programmers, just like you, helping each other. Join them; it visual basic preprocessor only takes a minute: Sign up How do I generate an error or warning in the C preprocessor? up vote 19 down vote favorite 1 I have a program that must be compiled only in DEBUG mode. (testing purpose) How http://gcc.gnu.org/onlinedocs/gcc-3.3.5/cpp/Diagnostics.html can I have the preprocessor prevent compilation in RELEASE mode? c-preprocessor share|improve this question edited Jun 25 at 23:11 phs 7,05822761 asked Feb 8 '10 at 12:29 Eonil 31k43203376 add a comment| 7 Answers 7 active oldest votes up vote 34 down vote accepted Place anywhere: #ifndef DEBUG #error Only Debug builds are supported #endif share|improve this answer answered Feb 8 '10 at 12:33 Hans Passant 653k819531598 add a comment| up vote 11 down vote C provide a #error statement, http://stackoverflow.com/questions/2221517/how-do-i-generate-an-error-or-warning-in-the-c-preprocessor and most compilers add a #warning statement. The gcc documentation recommends to quote the message. share|improve this answer edited Nov 17 '15 at 17:28 answered Feb 8 '10 at 12:37 philant 22.8k94890 1 @Antonio Right, there is no [more] recommendation there. I replaced the link with one to gcc doc. –philant Nov 17 '15 at 17:29 add a comment| up vote 4 down vote You can use a error directive for that. The following code will throw an error at compile time if DEBUG is not defined: #ifndef DEBUG #error This is an error message #endif share|improve this answer edited Feb 8 '10 at 23:32 answered Feb 8 '10 at 12:34 Laurent Etiemble 20.9k44075 Sorry, I mix pragma and error while typing. Corrected in answer. –Laurent Etiemble Feb 8 '10 at 23:32 add a comment| up vote 4 down vote Maybe something more sofisticated, but it is only copy&paste of previous solutions. :-) #ifdef DEBUG #pragma message ( "Debug configuration - OK" ) #elif RELEASE #error "Release configuration - WRONG" #else #error "Unknown configuration - DEFINITELY WRONG" #endif P.S. There is also one way how to generate warning. Create unreferenced labe like HereIsMyWarning: and don't reference it. During compilation you will get warning like 1>..\Example.c(71) : warning C4102: 'HereIsMyWarning' : unreferenced label share|improve this answer edited May 27 '15 at 15:20 Janito Vaqueiro Ferreira Filho 3,2641820 answered May 27 '15 at 10:26 Zdeno Pavlik 108
Practice Problems Quizzes Resources Source Code Source Code Snippets C and C++ Tips Finding a Job References Function Reference Syntax Reference Programming FAQ http://www.cprogramming.com/reference/preprocessor/error.html Getting Help Message Board Email About Us #error #error "This code should not compile" The #error macro allows you to make compilation fail and issue a statement that will https://en.wikibooks.org/wiki/C_Programming/Preprocessor appear in the list of compilation errors. It is most useful when combined with #if/#elif/#else to fail compilation if some condition is not true. For example: #ifndef __unix__ c preprocessor // __unix__ is typically defined when targetting Unix #error "Only Unix is supported" #endif Related C preprocessor tutorial Want to become a C++ programmer? The Cprogramming.com ebook, Jumping into C++, will walk you through it, step-by-step. Get Jumping into C++ today! Popular pages Exactly how to get started with C++ (or C) today C Tutorial C++ Tutorial c preprocessor error 5 ways you can learn to program faster The 5 Most Common Problems New Programmers Face How to set up a compiler 8 Common programming Mistakes What is C++11? How to make a game in 48 hours Recent additions How to create a shared library on Linux with GCC - December 30, 2011 Enum classes and nullptr in C++11 - November 27, 2011 Learn about The Hash Table - November 20, 2011 Rvalue References and Move Semantics in C++11 - November 13, 2011 C and C++ for Java Programmers - November 5, 2011 A Gentle Introduction to C++ IO Streams - October 10, 2011 Custom Search Advertising | Privacy policy | Copyright © 1997-2011 Cprogramming.com. All rights reserved. | webmaster@cprogramming.com Popular pages C Tutorial Exactly how to get started with C++ (or C) today 5 ways you can learn to program faster C++ Tutorial The 5 Most Common Problems New Programmers Face How to make a game in 48 hours 8 Common Programming Mistakes What is C++11? Image credits
they are actually compiled. Before the actual compilation of every C program it is passed through a Preprocessor. The Preprocessor looks through the program trying to find out specific instructions called Preprocessor directives that it can understand. All Preprocessor directives begin with the # (hash) symbol. C++ compilers use the same C preprocessor.[1] The preprocessor is a part of the compiler which performs preliminary operations (conditionally compiling code, including files etc...) to your code before the compiler sees it. These transformations are lexical, meaning that the output of the preprocessor is still text. NOTE: Technically the output of the preprocessing phase for C consists of a sequence of tokens, rather than source text, but it is simple to output source text which is equivalent to the given token sequence, and that is commonly supported by compilers via a -E or /E option -- although command line options to C compilers aren't completely standard, many follow similar rules. Contents 1 Directives 1.1 #include 1.1.1 Headers 1.2 #pragma 1.3 #define 1.4 macros 1.5 #error 1.6 #warning 1.7 #undef 1.8 #if,#else,#elif,#endif (conditionals) 1.9 #ifdef,#ifndef 2 Useful Preprocessor Macros for Debugging 2.1 Compile-time assertions 2.2 X-Macros Directives[edit] Directives are special instructions directed to the preprocessor (preprocessor directive) or to the compiler (compiler directive) on how it should process part or all of your source code or set some flags on the final object and are used to make writing source code easier (more portable for instance) and to make the source code more understandable. Directives are handled by the preprocessor, which is either a separate program invoked by the compiler or part of the compiler itself. #include[edit] C has some features as part of the language and some others as part of a standard library, which is a repository of code that is available alongside every standard-conformant C compiler. When the C compiler compiles your program it usually also links it with the standard C library. For example, on encountering a #include