Флаг 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