| <html> |
| <head> |
| <title>BOOST_PP_LINE</title> |
| <link rel="stylesheet" type="text/css" href="../styles.css"> |
| </head> |
| <body> |
| <div style="margin-left: 0px;"> |
| The <b>BOOST_PP_LINE</b> macro places notes encoded as line directives in the preprocessing output. |
| </div> |
| <h4>Usage</h4> |
| <div class="code"> |
| #line <b>BOOST_PP_LINE</b>(<i>line</i>, <i>file</i>) |
| </div> |
| <h4>Arguments</h4> |
| <dl> |
| <dt>line</dt> |
| <dd> |
| The new line number of the trailing line. |
| The predefined macro <i>__LINE__</i> is commonly used. |
| </dd> |
| <dt>file</dt> |
| <dd> |
| Typically the name of the current file. |
| However, any informative text will work. |
| This text is internally stringized, so quotation marks are unnecessary. |
| </dd> |
| </dl> |
| <h4>Remarks</h4> |
| <div> |
| If the macro <b>BOOST_PP_CONFIG_EXTENDED_LINE_INFO</b> is defined as <i>1</i> and a <i>file-iteration</i> |
| is in progress, this macro will automatically insert debugging information about the state of <i>file-iteration</i>. |
| This information will show the all of the current iteration values with the inner most iteration last. |
| </div> |
| <div> |
| This information is useful when errors might be spanning multiple iterations of the same source text. |
| Finding any errors is sometimes less than straightforward. |
| Use of this macro can provide information to make this much easier. |
| For example, instead of getting several errors like this: |
| <div><i> |
| "file.hpp", line 2: error: expected a ";"<br> |
| "file.hpp", line 4: error: improperly terminated macro invocation<br> |
| </i></div> |
| You might get something like this instead.... |
| <i><div> |
| "file.hpp [1]", line 2: error: expected a ";"<br> |
| "file.hpp [5]", line 4: error: improperly terminated macro invocation<br> |
| </i></div> |
| It is immediately evident that this error is spanning multiple iterations of the same source text. |
| If it wasn't, the same errors would occur on each iteration. |
| </div> |
| <div> |
| It must be noted however, that some compilers don't like filenames that aren't actually files. |
| Those compilers typically issues warnings about the bad filename. |
| This makes it a good idea to only define <b>BOOST_PP_CONFIG_EXTENDED_LINE_INFO</b> to <i>1</i> <i>only</i> when debugging. |
| </div> |
| <h4>See Also</h4> |
| <ul> |
| <li><a href="config_extended_line_info.html">BOOST_PP_CONFIG_EXTENDED_LINE_INFO</a></li> |
| </ul> |
| <h4>Requirements</h4> |
| <div> |
| <b>Header:</b> <a href="../headers/debug/line.html"><boost/preprocessor/debug/line.hpp></a> |
| </div> |
| <h4>Sample Code</h4> |
| <div><pre> |
| // sample.cpp |
| #if !defined(<a href="is_iterating.html">BOOST_PP_IS_ITERATING</a>) |
| |
| #define <a href="config_extended_line_info.html">BOOST_PP_CONFIG_EXTENDED_LINE_INFO</a> 1 |
| |
| #include <<a href="../headers/arithmetic/dec.html">boost/preprocessor/arithmetic/dec.hpp</a>> |
| #include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>> |
| #include <<a href="../headers/debug/line.html">boost/preprocessor/debug/line.hpp</a>> |
| #include <<a href="../headers/iteration/iterate.html">boost/preprocessor/iteration/iterate.hpp</a>> |
| |
| namespace sample { |
| |
| #define <a href="iteration_params_x.html">BOOST_PP_ITERATION_PARAMS_1</a> (3, (1, 5, "sample.cpp")) |
| #include <a href="iterate.html">BOOST_PP_ITERATE</a>() |
| |
| } // sample |
| |
| int main(void) { |
| return 0; |
| } |
| |
| #else |
| |
| #line <a href="line.html">BOOST_PP_LINE</a>(1, sample.cpp) |
| |
| int <a href="cat.html">BOOST_PP_CAT</a>(x, <a href="iteration.html">BOOST_PP_ITERATION</a>())); // extra parenthesis |
| |
| struct <a href="cat.html">BOOST_PP_CAT</a>(s, <a href="dec.html">BOOST_PP_DEC</a>(<a href="iteration.html">BOOST_PP_ITERATION</a>()) { |
| // missing a parenthesis |
| // ... |
| }; |
| |
| #endif |
| </pre></div> |
| <hr size="1"> |
| <div style="margin-left: 0px;"> |
| <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i> |
| </br><i>© Copyright Paul Mensonides 2002</i> |
| </div> |
| <div style="margin-left: 0px;"> |
| <p><small>Distributed under the Boost Software License, Version 1.0. (See |
| accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or |
| copy at <a href= |
| "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p> |
| </div> |
| </body> |
| </html> |