这里是我要使用的宏,如果定义了X_DEFINED
,它将被评估为DEFAULT_X,否则它将被评估为x
#define GET_X(x) (defined(X_DEFINED) ? DEFAULT_X : x)
它无法编译,并显示错误
error: 'X_DEFINED' was not declared in this scope
有什么建议吗?我希望能够根据是否定义了X_DEFINED
在参数和全局变量之间进行选择
答案 0 :(得分:10)
ui <- dashboardPage(
dashboardHeader(title="Our Plots"),
dashboardSidebar(),
dashboardBody(
fluidRow(column(width=6,height=12,
box(leafletOutput("myMap",height="400px"),title="Da MF Map",status = "warning", solidHeader = TRUE, collapsible = TRUE)),
column(width=6,height=12,
box(plotOutput("plot2",height=400)))
) ,
fluidRow(column(width =12, height = 12,
box(plotOutput("plot1",height=400)))),
# plotOutput("plot1")
fluidRow(column(width =12, height = 12,
box(plotOutput("plot3",height=400)))
)
)
)
仅适用于defined()
和类似的预处理程序指令。
您想要这样的东西:
#if
答案 1 :(得分:2)
您需要定义2个不同的宏,具体取决于是否定义了X_DEFINED
:
#ifdef X_DEFINED
# define GET_X(x) x
#else
# define GET_X(x) DEFAULT_X
#endif
答案 2 :(得分:1)
草率地说,您正在将运行时内容(三元运算符的评估)与甚至在编译(预处理器)之前发生的内容混合在一起。您可以改用#ifdef
:
#ifdef X_DEFINED
#define GET_X(x) DEFAULT_X
#else
#define GET_X(x) x
#endif