我意识到,C标准允许将具有相同内容的字符串文本存储在不同的位置,至少这是我被告知的内容,也是我从SO上的其他帖子(例如或 one )中删除的内容。然而,我觉得奇怪的是,标准不要求这些文本的位置相等,因为它可以保证较小的可执行文件,并大大加快对字符串文本的相等检查,从而使它们成为O(1)操作,而不是O(n)。
我想知道是什么论点--从实施者POV --提出了允许这些文字的位置不同的观点。编译器是否进行了任何优化,从而使比较文字位置的节省变得无关紧要?我很清楚,如果您将一个文字和一个指向包含相同字符串的不同位置的变量进行比较,在这个位置上进行这样的比较将是无用的,但是我正在试图理解制定标准的人是如
使用B.Stroustrup的编程文本和关于pg 50的'hello world‘程序会给出错误。我对"std_lib_facilities.h“包含文件有问题。
(以root用户身份)运行'gcc hworld1.cpp‘后,输出为-
In file included from /usr/include/c++/4.4/ext/hash_map:60,
from std_lib_facilities.h:34,
from hworld1.cpp:1:
/usr/include/c++/4.4/backward/bac