来源行长度限制(Source line length limit)

2019-06-24 07:24发布

什么是源代码行所有的编译器必须接受的最大长度是多少? 难道它在C ++ 11的变化? 如果是这样,什么是旧的价值?

我问这个问题,因为我正在做一些沉重的预处理巫术(不幸的是,模板将不会削减它),这样做有使线大非常快的倾向。 我想留在安全方面,所以我不会担心编译器X的平台上Ÿ拒绝,因为太长行我的代码的可能性。

Answer 1:

C ++ 2003, 附件B(资料)实施数量 (对不起,没有C ++ 2011派上用场)

2)限制可能限制数量时,其包括以下的那些或其它描述。 以下各量的方括号内的数目被推荐为最小为该数量。 然而,这些量仅仅是指导,并不确定是否合规。

...

  • 在一个逻辑源极线字符[65 536]。

你不问这些,但他们可能是有用的,也:

  • 一个完整的表达[256]内括号表达式的嵌套级别。
  • 宏标识符同时在一个转换单元[65 536]中定义。
  • 在一个宏调用参数[256]。
  • 字符的在内部标识符或宏名称[1 024]号码。
  • 宏标识符同时在一个转换单元[65 536]中定义。
  • 在一个宏定义参数[256]。


后记 :值得注意的是,什么是“一个逻辑源行”。 逻辑源代码行是你有

  • 物理源文件字符映射到基本来源字符集
  • 三字母序列(2.3)是由相应的单字符的内部表示替换
  • 一个新行字符和紧接在前反斜线字符的每个实例被删除

逻辑源代码行是你以前有:

  • 源文件被分解成预处理标记
  • 预处理指令执行和宏调用扩展。

[从C ++ 2003报价翻译的 2.1 ]

因此,如果OP的关注的是,宏扩展到超出合理的线长,我的答案是不相关的。 如果OP关心的是他的源代码(处理后\\n )可能太长,我的回答代表。



文章来源: Source line length limit