gpt4 book ai didi

C中的恒定大小全局数组

转载 作者:太空狗 更新时间:2023-10-29 15:10:49 25 4
gpt4 key购买 nike

我正在尝试找出定义一个具有恒定大小的全局数组的最佳方法,我得出了以下选项,它们都有自己的缺陷。

// 1:
#define ASIZE 10
int array[ASIZE];

// 2:
enum {ASIZE = 10};
int array[ASIZE];

// 3:
#define ASIZE_DEF 10
static const int ASIZE = ASIZE_DEF;
int array[ASIZE_DEF];

前两个的问题是我无法从 GDB 获取 ASIZE 的值。我想第三个选项是最好的,因为我仍然可以转储 const 的值,但它也会泄漏到另一个宏中。我可以在定义数组和 const 之后 undef 宏,但是如果 #defineconst 在一个将文件与数组声明分开,然后它会变得有点毛茸茸。

有没有更好的办法?

最佳答案

为了调试器而做某事是错误的。顺便说一下,gdb knows about this如果你compile your code right .

Some languages, such as C and C++, provide a way to define and invoke “preprocessor macros” which expand into strings of tokens. gdb can evaluate expressions containing macro invocations, show the result of macro expansion, and show a macro's definition, including where it was defined.

Version 3.1 and later of gcc, the gnu C compiler, provides macro information if you specify the options -gdwarf-2 and -g3; the former option requests debugging information in the Dwarf 2 format, and the latter requests “extra information”.

关于C中的恒定大小全局数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8389266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com