什么是源代码行所有的编译器必须接受的最大长度是多少? 难道它在C ++ 11的变化? 如果是这样,什么是旧的价值?
我问这个问题,因为我正在做一些沉重的预处理巫术(不幸的是,模板将不会削减它),这样做有使线大非常快的倾向。 我想留在安全方面,所以我不会担心编译器X的平台上Ÿ拒绝,因为太长行我的代码的可能性。
什么是源代码行所有的编译器必须接受的最大长度是多少? 难道它在C ++ 11的变化? 如果是这样,什么是旧的价值?
我问这个问题,因为我正在做一些沉重的预处理巫术(不幸的是,模板将不会削减它),这样做有使线大非常快的倾向。 我想留在安全方面,所以我不会担心编译器X的平台上Ÿ拒绝,因为太长行我的代码的可能性。
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
)可能太长,我的回答代表。