- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
例如,在我的程序中,我将一个字符串传递给一个方法。
someMethod(" Hello World ");
在编译时,我假设文字“Hello world”被识别为常量,而无需直接声明它。
如果它确实将其识别为常量,它是否将重复项存储为同一地址?
更具体地说是 c++11?
那么,让我们来看一个案例场景,假设我用对象到字符串列表填充了一个映射。
map<std::string,Shader> list;
list["shaders/sprite.vs"] = Shader("shaders/sprite.vs");
... (Sometime later in another file)
//Some call that needs a shader, that I have stored in a map.
SomeGLFunction("shaders/sprite.vs");
请原谅显然需要使用变量来保存它。
如果没有“/GF”的编译器选项来启用字符串池,编译器通常会将所有三个文字分别存储?
最佳答案
来自 C++ 标准(2.13.5 字符串文字)
16 Evaluating a string-literal results in a string literal object with static storage duration, initialized from the given characters as specified above. Whether all string literals are distinct (that is, are stored in nonoverlapping objects) and whether successive evaluations of a string-literal yield the same or a different object is unspecified
因此,相同的字符串文字是否是不同的对象是由实现定义的。通常它取决于编译器选项。
例如,如果您有这样的电话
someMethod("hello World");
在一个循环中,只使用一个字符串文字。因此该函数将在循环的每次迭代中获取字符串文字第一个字符的相同地址。
但是如果你会写
if ( "hello World" == "hello World" )
{
//...
}
然后根据相应的编译器选项,条件可以产生 true 或 false。
关于c++ - 重复常量 c_strings 是否重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44187467/
例如,在我的程序中,我将一个字符串传递给一个方法。 someMethod(" Hello World "); 在编译时,我假设文字“Hello world”被识别为常量,而无需直接声明它。 如果它确实
具体来说,我实际上是在编写取自“拼字游戏”的函数。我必须得到 10 个字符的单词,并且根据玩家的字母,检查是否可以用这些字母组成单词。我在检查具有更多相同类型字母的单词时遇到问题。这是我的代码:` i
我有一些与“X”代码交互的 C++ 代码(如在 X11 中)。对于其中一个调用,它希望参数是指向字符串的指针的地址。该调用被设置为获取一个计数的字符串数组。在这种情况下,它只需要 1 个字符串(从主机
我正在上我的第一个 CS 课,但我无法编译它。我查看了我教授的笔记、讲座和示例,但我输入的内容似乎并不重要,这是一个错误。我收到 38 个错误,而且只有 25 行代码!许多错误没有任何意义,例如,“e
(我有一些拼字游戏字符串操作 C++ 代码,我试图用 win32api 运行它。) void print_plain_vector_strings(vector S) //works fine {
我正在使用 quickfixengine 构建 FIX 应用程序。 quickfix 几乎没有文档,就像一个黑洞。我有一个 FIX::Account 类型的变量。我知道它是 FIX 字符串类型,但我如
我已经成功地创建了一个标量值属性,它的值是一个可变长度的 const char* 数组。但是我不明白如何读取这个属性! 这是我用来创建属性的代码: void create_attribute_
我是一名优秀的程序员,十分优秀!