-g(或) clang 命令选项是否会--debug增加已编译应用程序的内存占用量?具体来说,它是否会改变嵌入式 ARM 系统上加载的二进制大小?
注意:我知道调试版本向 ELF 添加了符号表和更多调试信息,但这应该由运行在主机(例如,带有 Eclipse 的 PC)上的调试器使用。问题是它是否会改变加载图像的大小。
我想用结构名称的哈希值初始化结构成员。
constexpr uint32_t myHash(const char* const data)
{ //Some code for hash
return myHash;
}
struct My_Struct{
constexpr Test() : ID(myHash("My_Struct"))
{
}
const uint32_t ID;
}
Run Code Online (Sandbox Code Playgroud)
当我有:
constexpr My_Struct my_constexpr_struct;
Run Code Online (Sandbox Code Playgroud)
然后,在编译时成功计算了哈希。但是,当我有主要职能时
My_Struct my_normal_struct;
Run Code Online (Sandbox Code Playgroud)
然后它将调用
constexpr uint32_t myHash(const char* const data)
Run Code Online (Sandbox Code Playgroud)
而不是简单地使用编译时间常数初始化struct成员。
显然,这将导致可避免的重大性能损失。
关于如何在编译时执行编译器的任何想法或建议?我真的不想做:
constexpr uint32_t MY_STRUCT_ID = myHash("My_Struct");
struct My_Struct{
constexpr Test() : ID(MY_STRUCT_ID)
{
}
const uint32_t ID;
Run Code Online (Sandbox Code Playgroud)
谢谢。