在今天的 C++ 课程中,我们讨论了标识符的最大可能长度,以及编译器如何在达到一定长度后最终停止将变量视为不同的变量。 (我的教授似乎暗示非常长的标识符会被截断。)我之前发布了另一个问题,希望看看是否在某处定义了限制。我的问题有点不同。假设我想测试标识符名称长度的实际限制或强制限制。我该怎么做呢?这就是我正在考虑做的事情,但不知怎的,它似乎太简单了。
x/(reallyLongA-reallyLongB)
,因为 reallyLongA
和 reallyLongB
太长,编译器只会将它们视为同一事物。到那时,除法运算将变成除以零,这应该会严重崩溃。 我的做法正确吗?在“破坏”编译器或“运行时”之前我会耗尽内存吗?
我认为您甚至不需要对变量生成任何操作。
以下代码在编译时会产生重定义错误;
int name;
int name;
我希望你会得到同样的错误
int namewithlastsignificantcharacterhere_abc;
int namewithlastsignificantcharacterhere_123;
我会使用一种宏脚本语言来连续生成更长的名称,直到你得到一个损坏的名称。 这是 Ruby 的一句台词
C:>ruby -e "(1..2048).each{|i| put \"int #{'variable'*i}#{i};\"}" > var.txt
当我在 c 文件中 #include var.txt 并使用 VS2008 进行编译时,出现错误
“1>c