小编yur*_*rko的帖子

如何在NERDTree中快速搜索?

是否可以通过文件名和文件内容在NERDTree窗口中进行搜索?

vim vim-plugin nerdtree

20
推荐指数
2
解决办法
2万
查看次数

C预处理器:字符串化不起作用

我想声明一个静态const数组,其中包含带有版本信息的字符串.

我已经有两个带版本号的宏,我想基于它生成一个初始的const字符串.

我正在尝试使用此处描述的方法,但它不能像预期的可用编译器工具那样工作.

我的代码是下一个:

#define API_VERSION_MAJOR 4
#define API_VERSION_MINOR 47

#define _STR(x) #x
#define STR(x) _STR(x)

static const char OSAPIVersion[] =
    STR(API_VERSION_MAJOR) "." STR(API_VERSION_MINOR) ;
Run Code Online (Sandbox Code Playgroud)

当我打印数组时,其值为"API_VERSION_MAJOR.API_VERSION_MINOR"而不是"4.47".

我使用定制的GCC 4.4.1 ARM交叉编译器.

当我在使用Cygwin GCC 4.5.3的PC上执行相同操作时,它可以正常工作.

预先感谢您的帮助.

更新:

事实证明,API_VERSION_MAJORAPI_VERSION_MINOR宏在源文件中是不可见的.我错过了包括.很简单.显而易见太简单了.

请注意,在这种情况下没有任何警告输出.

c c-preprocessor

7
推荐指数
1
解决办法
133
查看次数

链接描述文件中 *(.data)、*(.data*) 和 *(.data.*) 之间的区别

只是想知道链接描述文件中的此类结构(对于textdatarodatabss等)有什么区别:

.data :
{
    *(.data)
}


.data :
{
    *(.data*)
}


.data :
{
    *(.data.*)
}
Run Code Online (Sandbox Code Playgroud)

在所有情况下,我们都会从所有目标文件中收集数据部分,但细节决定成败。

快速测试表明映射文件中的地址不同,进而影响可执行文件的大小。

我试图在ld 文档中查找信息,但什么也没找到(或者只是错过了)。

我想这应该是非常简单的事情(所谓的显而易见)。

任何想法都将受到高度赞赏。

c linker gcc ld

7
推荐指数
1
解决办法
2341
查看次数

标签 统计

c ×2

c-preprocessor ×1

gcc ×1

ld ×1

linker ×1

nerdtree ×1

vim ×1

vim-plugin ×1