<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414226&amp;view=findpost&amp;p=3790323</guid>
        <pubDate>Sun, 17 Feb 2019 15:08:08 +0000</pubDate>
        <title>Выделение кода после препроцессинга</title>
        <link>https://forum.sources.ru/index.php?showtopic=414226&amp;view=findpost&amp;p=3790323</link>
        <description><![CDATA[Jin X: Да ладно, можно уже не париться.<br>
PHP-шный код выше вполне справляется с задачей :) <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2019-02-17T18:08:54+03:00">17.02.19, 15:08</time></span></span><br>
Конечно, мне надо не просто директивы <strong class='tag-b'>#include</strong> убрать.]]></description>
        <author>Jin X</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414226&amp;view=findpost&amp;p=3790240</guid>
        <pubDate>Sat, 16 Feb 2019 04:58:26 +0000</pubDate>
        <title>Выделение кода после препроцессинга</title>
        <link>https://forum.sources.ru/index.php?showtopic=414226&amp;view=findpost&amp;p=3790240</link>
        <description><![CDATA[amk: Я бы тогда лучше написал так<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">sed &#39;s|^\s*\#\s*include\b|// {text}|g&#39; file.ii &#62; file1.ii</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script> просто превращая include в комментарии<br>
<br>
Но только в первом посте требуется не это.<br>
<strong class='tag-b'>Jin X</strong> хочет, чтобы на выходе получился файл с исключёнными нерабочими ветками #if. Для этого всё-таки приходится заходить внутрь #include и выполнять препроцессирование.]]></description>
        <author>amk</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414226&amp;view=findpost&amp;p=3790215</guid>
        <pubDate>Fri, 15 Feb 2019 19:02:58 +0000</pubDate>
        <title>Выделение кода после препроцессинга</title>
        <link>https://forum.sources.ru/index.php?showtopic=414226&amp;view=findpost&amp;p=3790215</link>
        <description><![CDATA[gathering: <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">sed &#39;s/\#include.*/ /g&#39; file.ii &#62; file1.ii</div></ol></div></div></div></div> <br>
<br>
<a class='tag-url' href='https://ideone.com/os9UBU' target='_blank'>https://ideone.com/os9UBU</a>]]></description>
        <author>gathering</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414226&amp;view=findpost&amp;p=3789664</guid>
        <pubDate>Sat, 09 Feb 2019 12:20:26 +0000</pubDate>
        <title>Выделение кода после препроцессинга</title>
        <link>https://forum.sources.ru/index.php?showtopic=414226&amp;view=findpost&amp;p=3789664</link>
        <description><![CDATA[Jin X: <strong class='tag-b'>android90</strong>, и ничего этот скрипт не делает толком...<br>
Только заменяет #include &quot;file&quot; на &quot;file&quot; и всё.]]></description>
        <author>Jin X</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414226&amp;view=findpost&amp;p=3789567</guid>
        <pubDate>Thu, 07 Feb 2019 10:39:23 +0000</pubDate>
        <title>Выделение кода после препроцессинга</title>
        <link>https://forum.sources.ru/index.php?showtopic=414226&amp;view=findpost&amp;p=3789567</link>
        <description><![CDATA[android90: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=414226&view=findpost&p=3789494'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Jin X &#064; <time class="tag-quote__quoted-time" datetime="2019-02-05T14:00:53+00:00">05.02.19, 14:00</time></span><div class='quote '>Накатал скриптик на PHP.<br>
Может, кому пригодится ;)</div></div><br>
RTFM<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">sed &#39;s/\#include*/ /g&#39; file.ii &#62; file1.ii</div></ol></div></div></div></div>]]></description>
        <author>android90</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414226&amp;view=findpost&amp;p=3789494</guid>
        <pubDate>Tue, 05 Feb 2019 14:00:53 +0000</pubDate>
        <title>Выделение кода после препроцессинга</title>
        <link>https://forum.sources.ru/index.php?showtopic=414226&amp;view=findpost&amp;p=3789494</link>
        <description><![CDATA[Jin X: Накатал скриптик на PHP.<br>
Может, кому пригодится ;)<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&#60;?php</div><div class="code_line">&nbsp;</div><div class="code_line">// Command line processing</div><div class="code_line">&nbsp;</div><div class="code_line">const UNLIMITED = 1000000000;</div><div class="code_line">&nbsp;</div><div class="code_line">$parse_include = true;</div><div class="code_line">$save_info = false;</div><div class="code_line">$max_empty_lines = UNLIMITED;</div><div class="code_line">&nbsp;</div><div class="code_line">if ($argc &#60; 3) {</div><div class="code_line">&nbsp;&nbsp;echo &quot;php parse_ii &#60;infile.ii&#62; &#60;outfile.ii&#62; [/x] [/l] [/0../4] &#60;filename1&#62; [filename2]...\n&quot;;</div><div class="code_line">&nbsp;&nbsp;echo &quot;/x - exclude specified files (filename1, filename2...), otherwise include only them\n&quot;;</div><div class="code_line">&nbsp;&nbsp;echo &quot;/i - save line info (numbers and filenames)\n&quot;;</div><div class="code_line">&nbsp;&nbsp;echo &quot;/0../4 - delete more than 0 (all), 1, 2, 3 or 4 consecutive empty lines\n&quot;;</div><div class="code_line">&nbsp;&nbsp;exit(1);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">$infile = &#39;&#39;;</div><div class="code_line">$outfile = &#39;&#39;;</div><div class="code_line">$filelist = [];</div><div class="code_line">&nbsp;</div><div class="code_line">for ($i = 1; $i &#60; $argc; ++$i) {</div><div class="code_line">&nbsp;&nbsp;$s = trim($argv[$i]);</div><div class="code_line">&nbsp;&nbsp;switch (strtolower($s)) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;case &#39;/x&#39;:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;$parse_include = false;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; &nbsp;case &#39;/i&#39;:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;$save_info = true;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; &nbsp;case &#39;/0&#39;:</div><div class="code_line">&nbsp;&nbsp; &nbsp;case &#39;/1&#39;:</div><div class="code_line">&nbsp;&nbsp; &nbsp;case &#39;/2&#39;:</div><div class="code_line">&nbsp;&nbsp; &nbsp;case &#39;/3&#39;:</div><div class="code_line">&nbsp;&nbsp; &nbsp;case &#39;/4&#39;:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;$max_empty_lines = (int)substr($s, 1, 1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; &nbsp;default:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if (substr($s, 0, 1) == &#39;/&#39;) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;echo &quot;Unknown option: $s\n&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;} else {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if ($infile === &#39;&#39;) { $infile = $s; }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;else if ($outfile === &#39;&#39;) { $outfile = $s; }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;else if ($s !== &#39;&#39;) { array_push($filelist, strtolower($s)); }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">if (count($filelist) == 0) {</div><div class="code_line">&nbsp;&nbsp;echo &#39;No files to &#39;.[&#39;exclude&#39;, &#39;include&#39;][$parse_include].&quot; are specified!\n&quot;;</div><div class="code_line">&nbsp;&nbsp;exit(1);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">echo &quot;Source filename: $infile\n&quot;;</div><div class="code_line">echo &quot;Output filename: $outfile\n&quot;;</div><div class="code_line">echo &#39;Parse type: &#39;.[&#39;exclude&#39;, &#39;include&#39;][$parse_include].&#39; (&#39;.implode(&#39;, &#39;, $filelist).&quot;)\n&quot;;</div><div class="code_line">echo &#39;Save line info: &#39;.[&#39;no&#39;, &#39;yes&#39;][$save_info].&quot;\n&quot;;</div><div class="code_line">echo &#39;Max empty lines: &#39;.($max_empty_lines &#60; UNLIMITED ? $max_empty_lines : &#39;unlimited&#39;).&quot;\n\n&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">// File read</div><div class="code_line">&nbsp;</div><div class="code_line">echo &quot;Reading file...\n&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">if (!file_exists($infile)) {</div><div class="code_line">&nbsp;&nbsp;echo &quot;Input file $infile is not found!\n&quot;;</div><div class="code_line">&nbsp;&nbsp;exit(1);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">// File processing</div><div class="code_line">&nbsp;</div><div class="code_line">echo &quot;Processing lines...\n&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">$output = [];</div><div class="code_line">$include = !$parse_include;</div><div class="code_line">$total_lines = 0;</div><div class="code_line">$written_lines = 0;</div><div class="code_line">$empty_count = 0;</div><div class="code_line">&nbsp;</div><div class="code_line">foreach (file($infile) as $s) {</div><div class="code_line">&nbsp;&nbsp;preg_match(&#39;/^#\s*\d+\s+(?:&quot;(?:.+\\)?(.+)&quot;|(?:\S+\\)?(\S+))/&#39;, trim($s), $result);</div><div class="code_line">&nbsp;&nbsp;if (count($result) &#62; 1) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;$found = in_array(strtolower(end($result)), $filelist);</div><div class="code_line">&nbsp;&nbsp; &nbsp;$include = ($found == $parse_include);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ($save_info &amp;&amp; $include) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;array_push($output, $s);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;++$written_lines;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;$empty_count = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp;} else {</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ($include) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if (trim($s) === &#39;&#39;) { ++$empty_count; } else { $empty_count = 0; }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if ($empty_count &#60;= $max_empty_lines) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;array_push($output, $s);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;++$written_lines;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;++$total_lines;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">// File write</div><div class="code_line">&nbsp;</div><div class="code_line">echo &quot;Writting file...\n&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">$file = fopen($outfile, &#39;w&#39;);</div><div class="code_line">fwrite($file, implode($output));</div><div class="code_line">fclose($file);</div><div class="code_line">&nbsp;</div><div class="code_line">echo &quot;Successfully written $written_lines lines out of $total_lines (&quot;.((int)($written_lines/$total_lines*10000)/100).&quot;%)\n&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">?&#62;</div></ol></div></div></div></div>]]></description>
        <author>Jin X</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=414226&amp;view=findpost&amp;p=3789453</guid>
        <pubDate>Mon, 04 Feb 2019 13:38:48 +0000</pubDate>
        <title>Выделение кода после препроцессинга</title>
        <link>https://forum.sources.ru/index.php?showtopic=414226&amp;view=findpost&amp;p=3789453</link>
        <description><![CDATA[Jin X: Приветствую всех&#33;<br>
<br>
Есть прога (основной исходник и библиотека из 4-х файлов).<br>
В библиотеке 95% – это #ifdef&#39;ы, #define&#39;ы и т.п. + код под неинтересующие меня платформы.<br>
Я хочу обработать всё это дело, получив чистый исходник, без препроцессорного &quot;мусора&quot;, под конкретную платформу.<br>
Но include&#39;ы хочу оставить, а не тащить их все туда же.<br>
<br>
Проблема в том, что если написать:<br>
<strong class='tag-b'>gcc -E file.cpp -o file.ii</strong><br>
<br>
То в получаемый исходник тащатся ВСЕ include&#39;ы.<br>
<br>
К примеру:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">using namespace std;</div><div class="code_line">&nbsp;</div><div class="code_line">#define RETURN return 0</div><div class="code_line">&nbsp;</div><div class="code_line">int main() {</div><div class="code_line">&nbsp;&nbsp; &nbsp;cout &#60;&#60; &quot;Hello, world!&quot; &#60;&#60; endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;RETURN;</div><div class="code_line">}</div></ol></div></div></div></div><br>
выдаёт файл на 650 Кб, т.к. туда попадает <strong class='tag-b'>iostream</strong> и всё, что внутри него.<br>
<br>
Как можно быстро очистить результирующий файл?]]></description>
        <author>Jin X</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      </channel>
      </rss>
	