'#include'和'## include'有什么区别?

时间:2017-05-16 14:19:01

标签: c-preprocessor

例如:

#include "pathtoheader1/header1.hh"
##include "pathtoheader2/header2.hh"

这两个预处理程序指令有什么区别?

修改

据我所知,## include指令在我正在使用的程序的上下文中,将-I标志添加到指定的包含路径。

TRICK_CFLAGS += -Imodels
TRICK_CXXFLAGS += -Imodels

编译器现在将寻找:

/models/pathtoheader1/header1.hh

而不是

/pathtoheader1/header1.hh

这些标志存储在.mk文件中。

其他信息

我正在使用NASA的Trick Simulation环境来构建一个简单的2体模拟绕太阳运行的地球。我正在使用的特定工具称为'trick-CP',Trick的编译工具。

https://github.com/nasa/trick

3 个答案:

答案 0 :(得分:3)

##是C和C ++预处理器中的令牌粘贴运算符。它用于连接两个参数。

由于它需要任一方的参数,因此以它开头的行在语法上不是有效的,除非它是前一行的延续,其中前一行使用了行继续符号\或等效的三字符序列。 / p>

答案 1 :(得分:2)

第二个是C ++中的语法错误,我很确定它也是C语法错误。 ##预处理程序运算符仅在预处理程序宏内部有效(强制标记粘贴)。

答案 2 :(得分:2)

问题是关于NASA Trick。 Trick用自己的语法扩展了C和C ++语言。

来自Trick documentation

  

应使用## include包含为用户定义的模型提供数据类型的头文件。注意双重哈希(#)。