c++ - 为什么这不是有效的语法?
问题描述
#include ("/" "include/foo.h")
#include ("/" "include/bar.h")
即,我已经得到了像..
char* a = "/" "include/foo.h";
这样的工作。所以我想知道,为什么不将此作为预处理器的功能添加到?
或者也许..是否有任何支持这种语法的预处理器?
我的想法是你可以做类似的事情..
// config.h
#define LIB1_PATH "/include"
接着..
// main.c
#include "config.h"
#include (LIB1_PATH "foo.h")
#include (LIB1_PATH "bar.h")
如果您随后将“lib1”移动到项目的其他位置,您只需调整 config.h。
解决方案
为什么这不是有效的语法?
因为#include
预处理指令的语法是cpp.include例如:
# include " q-char-sequence " new-line
(
)
那里不允许出现字符。"
也不允许多个, q-char是any member of the source character set **except** new-line and "
.
为什么不将此作为预处理器的功能添加到?
因为这需要工作。去实施它。
有没有支持这种语法的预处理器?
我非常怀疑。不。
我的想法是你可以做类似的事情..
对于有限的情况,你可以使用预处理指令的形式:
# include pp-tokens new-line
有关用法,请参阅此问题。但是,并非一切皆有可能,请参阅此答案。
如果您随后将“lib1”移动到项目的其他位置,您只需调整 config.h。
不,典型的解决方案是向编译器添加包含路径。然后,如果您要移动lib1
,您将更改构建和编译器选项,而无需对源代码进行任何修改。
保持#include
非常简单 - 它们是原始包含其他文件的一种非常粗略的方式。没有理由生成#include
路径。
推荐阅读
- docker - 跨机器时无法连接覆盖网络中的其他容器
- node.js - 如何在 typeorm 的自定义字段上做 orderBy?
- java - Kafka Producer 将消息发布到单个分区
- html - 如何使按钮:当通过代码将按钮置于光标下时,在移动光标之前未触发悬停状态
- android - Firebase 没有为 Release 构建变体采用相同的包名称
- azure-powershell - 查找当前登录的用户名 Azure PowerShell (cloudshell)
- javascript - 当另一个 div 向下滑动时,我如何才能向上滑动一个 div
- c# - 为什么我会收到错误消息“立方体不存在或尚未处理。'
- c# - 团队基础在 RestSharp 和 NewtonSoft 上构建错误
- r - ggplot2 在函数中不起作用,但在外部起作用