Флаг idirafter вставляет новый символ при расширении макроса в gcc 5.2.0

Во время компиляции файла C я использовал idirafter флаг, чтобы упомянуть каталог, чтобы посмотреть, если он не находит файл в любом из мест, упомянутых с помощью -I, Чтобы смоделировать проблему, я написал небольшую примерную программу, как показано ниже.

Я не уверен, почему, когда CLI_CONFIGURE_MODE раскрывается, добавляется новая строка до и после символа. Если кто-нибудь может мне помочь, то это будет действительно полезно.

Включить файл: sample.h

#define CLI_CONFIGURE_MODE "/exec/configure"

Тестовый файл C: sample.c

#include "sample.h"    
#define FORM(cmdstr,modestr) command cmdstr; mode modestr; should be in previous line
    FORM("dummy_command" , CLI_CONFIGURE_MODE) 

Фрагмент вывода препроцессора файла:

define __DECIMAL_BID_FORMAT__ 1     
# 1 "<command-line>"     
# 1 "waste.c"     
# 1 "../waste_include/waste.h" 1 3 4     
#define CLI_CONFIGURE_MODE "/exec/configure"     
# 2 "waste.c" 2     

#define FORM(cmdstr,modestr) command cmdstr; mode modestr; should be in previous line

    command "dummy_command"; mode    
    # 5 "waste.c" 3 4     
    "/exec/configure"    
    # 5 "waste.c"     enter code hereenter code here
    ; should be in previous line

Командная строка, используемая для компиляции файла:-

x86_64-wrs-linux-gcc -idirafter../waste_include -E -dD waste.c > 1

0 ответов

Другие вопросы по тегам