草庐IT

Constants

全部标签

c - GCC:为什么常量变量没有放在 .rodata 中

我一直相信GCC会将staticconst变量放置到.rodata段(或放置到.text段以进行优化)的ELF或此类文件。但好像不是这样的。我目前在装有GNU/Linux的笔记本电脑上使用gcc(GCC)4.7.020120505(prerelease)。它确实在.bss段中放置了一个静态常量变量:/**thisisa.c,andinitsgeneratedasmfilea.s,thefollowinglinegives:*.comma,4,4*whichwouldplacevariableain.bssbutnot.rodata(or.text)*/staticconstinta;i

c - GCC:为什么常量变量没有放在 .rodata 中

我一直相信GCC会将staticconst变量放置到.rodata段(或放置到.text段以进行优化)的ELF或此类文件。但好像不是这样的。我目前在装有GNU/Linux的笔记本电脑上使用gcc(GCC)4.7.020120505(prerelease)。它确实在.bss段中放置了一个静态常量变量:/**thisisa.c,andinitsgeneratedasmfilea.s,thefollowinglinegives:*.comma,4,4*whichwouldplacevariableain.bssbutnot.rodata(or.text)*/staticconstinta;i

c++ - Global const string& 对我来说很难闻,它真的安全吗?

我正在查看一位同事的代码,我看到他在全局范围内定义了几个常量:conststring&SomeConstant="Thisissomeconstanttext";就我个人而言,这对我来说很糟糕,因为引用指的是我假设是从给定char数组构造的“匿名”对象。从语法上讲,它是合法的(至少在VC++7中),而且它似乎可以运行,但实际上我宁愿让他删除&,这样它的作用就不会模棱两可了。那么,这真的安全合法吗?我很着迷?正在构造的临时对象是否有保证的生命周期?我一直认为以这种方式使用的匿名对象在使用后会被破坏......所以我的问题也可以推广到匿名对象的生命周期。标准是否规定了匿名对象的生命周期?它

c++ - Global const string& 对我来说很难闻,它真的安全吗?

我正在查看一位同事的代码,我看到他在全局范围内定义了几个常量:conststring&SomeConstant="Thisissomeconstanttext";就我个人而言,这对我来说很糟糕,因为引用指的是我假设是从给定char数组构造的“匿名”对象。从语法上讲,它是合法的(至少在VC++7中),而且它似乎可以运行,但实际上我宁愿让他删除&,这样它的作用就不会模棱两可了。那么,这真的安全合法吗?我很着迷?正在构造的临时对象是否有保证的生命周期?我一直认为以这种方式使用的匿名对象在使用后会被破坏......所以我的问题也可以推广到匿名对象的生命周期。标准是否规定了匿名对象的生命周期?它

c++ - 创建一个固定大小的 std::vector 并写入元素

在C++中,我希望分配一个固定大小(但大小在运行时确定)std::vector,然后写入该vector中的元素。这是我正在使用的代码:intb=30;conststd::vectortest(b);int&a=test[3];但是,这给了我一个编译器(MSVC2010Pro)错误:errorC2440:'initializing':cannotconvertfrom'constint'to'int&'.Conversionlosesqualifiers.我对const的理解是,它使类的所有成员变量都成为常量。例如,以下工作正常:classmyvec{public:myvec(intnu

c++ - 创建一个固定大小的 std::vector 并写入元素

在C++中,我希望分配一个固定大小(但大小在运行时确定)std::vector,然后写入该vector中的元素。这是我正在使用的代码:intb=30;conststd::vectortest(b);int&a=test[3];但是,这给了我一个编译器(MSVC2010Pro)错误:errorC2440:'initializing':cannotconvertfrom'constint'to'int&'.Conversionlosesqualifiers.我对const的理解是,它使类的所有成员变量都成为常量。例如,以下工作正常:classmyvec{public:myvec(intnu

c++ - 未定义模板的隐式实例化 'class'

在我的库中尝试为const和非const模板参数提供函数时,我遇到了一个奇怪的问题。以下源代码是一个最小的示例现象:#includetemplatestructsome_meta_class;templatestructsome_meta_class{typedefvoidtype;};templatestructreturn_type{typedeftypenamesome_meta_class::typetest;typedefvoidtype;};templatetypenamereturn_type::typefoo(type&in){std::coutvoidfoo(type

c++ - 未定义模板的隐式实例化 'class'

在我的库中尝试为const和非const模板参数提供函数时,我遇到了一个奇怪的问题。以下源代码是一个最小的示例现象:#includetemplatestructsome_meta_class;templatestructsome_meta_class{typedefvoidtype;};templatestructreturn_type{typedeftypenamesome_meta_class::typetest;typedefvoidtype;};templatetypenamereturn_type::typefoo(type&in){std::coutvoidfoo(type

c++ - 如何将 const char* 存储到 char*?

我有thiscode按预期工作:#defineMAX_PARAM_NAME_LEN32constchar*GetName(){return"Testtext";}intmain(){charname[MAX_PARAM_NAME_LEN];strcpy(name,GetName());cout如果我想将结果存储到char*(因为我使用的框架中的某些函数仅使用char*作为输入)而不使用strcpy(为了代码的实用性和可读性,以及学习),我该怎么办?保持在const中,效果很好:constchar*name;name=GetName();但我还有const。尝试只使用char*:char

c++ - 如何将 const char* 存储到 char*?

我有thiscode按预期工作:#defineMAX_PARAM_NAME_LEN32constchar*GetName(){return"Testtext";}intmain(){charname[MAX_PARAM_NAME_LEN];strcpy(name,GetName());cout如果我想将结果存储到char*(因为我使用的框架中的某些函数仅使用char*作为输入)而不使用strcpy(为了代码的实用性和可读性,以及学习),我该怎么办?保持在const中,效果很好:constchar*name;name=GetName();但我还有const。尝试只使用char*:char