Mos*_*she 4 c++ compiler-construction unit-testing language-design
在今天的C++类中,我们讨论了标识符的最大可能长度,以及编译器在一定长度后如何最终停止将变量视为不同的变量.(我的教授似乎暗示真正的长标识符被截断了.)我之前发布了另一个问题,希望看看是否在某处定义了限制.我的问题有点不同.假设我想测试标识符名称长度的实际或强制限制.我该怎么做呢?这是我正在考虑的事情,但不知何故,它似乎太简单了.
x/(reallyLongA-reallyLongB),因为reallyLongA并且reallyLongB将会很长,以至于编译器只会将它们视为同一个东西.在这一点上,分裂操作将变为零分割,这应该崩溃并且可怕地燃烧.我接近这个吗?在"打破"编译器或"运行时"之前,我是否会耗尽内存?
我认为您甚至不需要对变量生成任何操作.
以下代码将在编译时生成重定义错误;
int name;
int name;
Run Code Online (Sandbox Code Playgroud)
我希望你会得到同样的错误
int namewithlastsignificantcharacterhere_abc;
int namewithlastsignificantcharacterhere_123;
Run Code Online (Sandbox Code Playgroud)
我会使用宏脚本语言来连续生成更长的名称,直到你有一个破坏.这是一个Ruby单线程
C:> ruby -e"(1..2048).each {| i | puts \"int#{'variable'*i}#{i}; \"}"> var.txt
当我在ac文件中#include var.txt,并使用VS2008编译时,我收到错误
"1> c:\ code\quiz\var.txt(512):致命错误C1064:编译器限制:令牌溢出的内部缓冲区"
和JRL引用的4096是512*8个字符.
| 归档时间: |
|
| 查看次数: |
460 次 |
| 最近记录: |