- 论坛徽章:
- 0
|
HI,All
我在一个文件types.cpp中定义了以下两个数组
const int LOG_LEVEL_COLOR[3] = {
RED,
YELLOW,
WHITE,
};
const char* LOG_LEVEL_STRING[] = {
"ERROR",
"WARN",
"INFO",
};
通过objdump检查,编译出来的.o文件没有LOG_LEVEL_COLOR这个符号
objdump -x Debug.cpp.o
部分输出:
- SYMBOL TABLE:
- 00000000 l df *ABS* 00000000 types.cpp
- 00000000 l d .text 00000000 .text
- 00000000 l d .data 00000000 .data
- 00000000 l d .bss 00000000 .bss
- 00000000 l d .rodata 00000000 .rodata
- 00000000 l d .note.GNU-stack 00000000 .note.GNU-stack
- 00000000 l d .comment 00000000 .comment
- 00000000 g O .data 0000000c LOG_LEVEL_STRING
复制代码
如果
const int 改为int 则有LOG_LEVEL_COLOR这个符号:
- 00000000 l df *ABS* 00000000 types.cpp
- 00000000 l d .text 00000000 .text
- 00000000 l d .data 00000000 .data
- 00000000 l d .bss 00000000 .bss
- 00000000 l d .rodata 00000000 .rodata
- 00000000 l d .note.GNU-stack 00000000 .note.GNU-stack
- 00000000 l d .comment 00000000 .comment
- 00000000 g O .data 0000000c LOG_LEVEL_COLOR
- 0000000c g O .data 0000000c LOG_LEVEL_STRING
复制代码
为什么呢? |
|