小编Bob*_*Bob的帖子

C++ 运算符 () 括号 - 运算符 Type() 与 Type 运算符()

如果有的话有什么区别?

例如:int operator()operator int()

我正在寻找“官方”C++ 文档的答案。

c++

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

gcc编译器检测-提取参数+返回值

如果我有

void func(int a, char * c)
{
// Something
}
Run Code Online (Sandbox Code Playgroud)

并希望使用标志 -finstrument-functions进行检测

生成函数进入和退出的仪器调用。在函数进入之后和函数退出之前,将使用当前函数的地址及其调用位置来调用以下分析函数。(在某些平台上,__builtin_return_address 无法在当前函数之外工作,因此调用站点信息可能无法用于分析函数。)

void __cyg_profile_func_enter (void *this_fn,
                                     void *call_site);
void __cyg_profile_func_exit  (void *this_fn,
                                     void *call_site);
Run Code Online (Sandbox Code Playgroud)

是否可以获取函数开头和结尾的参数?

更新#1

我只需转储每个参数的二进制 blob,然后事后重建对象、整数等即可。

c c++ instrumentation gcc

6
推荐指数
0
解决办法
917
查看次数

Eclipse - 如何重命名项目文件夹(在文件系统上)

我的工作区文件系统文件夹当前是C:\work\Eclipse-Workspace_PROJ,我的代码文件系统文件夹是C:\work\PROJ.

我想重命名C:\work\PROJ为,C:\work\PROJ-1但上次我重命名了它。. . 坏事发生了。

在不破坏内容的情况下重命名我的代码文件系统文件夹的步骤是什么?

eclipse windows

6
推荐指数
2
解决办法
9230
查看次数

SVN - 如何将单独检出的子文件夹转换为稀疏检出

SVN repo看起来像这样:

顶部/
顶部/一个
顶部/两个
顶部/三个
......等等

您不想签出整个顶级文件夹,但您不知道SVN的稀疏结帐功能.
所以你将repo文件夹top/one签出到C:\ svn\top\one然后你将repo文件夹top/two签出到C:\ svn\top\two

此时,两个签出的文件夹都有自己的.svn文件夹

然后你会发现稀疏的结账.

如何将这两个文件夹的"独立"签出转换为顶级文件夹的稀疏签出,只需最少的重新检出

是否只是在不覆盖现有项目的情况下启动稀疏签出然后只是删除预先存在的.svn文件夹这么简单?

svn tortoisesvn

6
推荐指数
1
解决办法
121
查看次数

google mock - 我可以在同一个模拟对象上多次调用EXPECT_CALL吗?

如果我EXPECT_CALL在同一个模拟对象上调用两次TEST_F...怎么了?

期望是附加到模拟对象还是第二次调用会消除第一次调用的效果?

我发现After After Clause似乎暗示允许多次调用同一个mock + EXPECT_CALL.

unit-testing googletest googlemock

6
推荐指数
3
解决办法
7468
查看次数

定义 typedef 的可变参数模板(使用 C++98)

除了使用 C++98 之外,与此处相同的问题:

我刚刚定义了 4 个不同的 typedef,它们的差异很小,我想知道是否有办法使用模板来更有效地做到这一点。

我的 typedef 是以下形式: typedef Type1 (*pf)(Type2, Type3, ...)

我如何模板这个typedef?

Type1需要。

我手动写:

typedef int (*pf)(int)
typedef bool (*pf)()
typedef char (*pf)(bool, int)
Run Code Online (Sandbox Code Playgroud)

我正在寻找类似的东西:

template <Type T1,Type...Rest>
typedef T1 (*pf)(Type...Rest)
Run Code Online (Sandbox Code Playgroud)

那是对的吗?

c++ templates typedef c++98

6
推荐指数
1
解决办法
709
查看次数

android - 如何使用 Android.bp 文件进行构建(Soong 构建系统)

我正在为 Android 构建一个本机库,其构建配置是Android.bp.

我如何执行构建?

windows android android-ndk

6
推荐指数
1
解决办法
5020
查看次数

GNU 链接器脚本 - 如何自动将代码分发到多个不连续的部分

我正在修改现有的.ld代码,并且我有两个闪存部分。这两个 Flash 部分并不连续,因此我不能仅仅扩展其中一个部分的定义以包含另一个部分。

目前所有代码都可以放入sec1,但如果我关闭空间优化,它就不适合。

问题

我该如何编写.ld才能说放置尽可能多的代码sec1,然后放置尽可能多的代码sec2,然后……sec3等等

我知道如何将特定内容放在.obj特定部分中,但这不是我想要的,因为我需要.ld随着代码的变化不断修改。

c c++ linker gcc linker-scripts

6
推荐指数
0
解决办法
632
查看次数

如何使#if #endif成为宏的一部分

#define M(N)\
#if N == 5\
    /*several lines of code that 
      Can't be replaced with a   
      tertnary operator*/
#else\
    N;\
#endif
Run Code Online (Sandbox Code Playgroud)

当我像这样使用这个宏

M(5);
Run Code Online (Sandbox Code Playgroud)

我期待输出

// everything within the #if #else block
Run Code Online (Sandbox Code Playgroud)

但它没有编译.

我并不感到意外,因为它不能编译:我知道#if不能用在延续线上,即"\".

我也试过了

#define POUND_IF #if
Run Code Online (Sandbox Code Playgroud)

然后使用POUND_IF但不起作用.

这可能吗?

是否有一些可以使用的漂亮的Boost预处理器东西?

c macros

5
推荐指数
2
解决办法
268
查看次数

GCC .obj文件输出不确定(.debug_info,PROGBITS部分)

我的编译命令是
C:\work\PROJ-test\QNX_SDK\host\win32\x86/usr/bin/qcc -c -Wc,-frandom-seed="sadfsasafssadsa" -Wc,-MP,-MT,C:/work/PROJ-test/N_Manag/src/bld/N_Manag//armle-v7/release/nav_event_rcv.cpp.o,-MMD,C:/work/PROJ-test/N_Manag/src/bld/N_Manag//armle-v7/release/nav_event_rcv.cpp.d -Vgcc_ntoarmv7le -w9 -shared -O3 -ggdb3 -DBUILD_VERSION= -DPASLOGOPTIONS=0x02 -DPASLOGAPPZONES=31,23,30,9,8,3 -DNS1_5PORT -DBOARD_TYPE=PRODUCTION C:/work/PROJ-test/N_Manag/src/nav_event_rcv.cpp -o C:/work/PROJ-test/N_Manag/src/bld/N_Manag//armle-v7/release/nav_event_rcv.cpp.o

当我连续两次运行此命令时,这两个.obj文件是不同的,而不仅仅是来自时间戳的几个字节.

我们正在切换构建系统,因此我们希望我们的构建与二进制兼容.我的绝大多数目标文件都是二进制相同的.一些使用__DATE____TIME__宏的人有几个字节不同但这一个是完全不同的!

我使用了一个elf-dump实用程序,发现两个编译之间截然不同的部分就是这个

  [544] .debug_info
       PROGBITS        00000000 047d70 1021ed 00   0   0  1
       [00000000]: 
Run Code Online (Sandbox Code Playgroud)

但我不知道PROGBITS包含什么以及为什么它包含用于连续编译的不同项目.这个网站只是声明这PROGBITS是一个属性,而不是它所指示的内容(以及为什么它对于连续编译而言是不同的).

如何生成.obj二元确定性?

思考

不知何故,正在编译的代码实际上正在修改的.debug_info部分.obj.这.cpp使用了一堆boost库; 这可能是原因吗?

UPDATE

我查看了生成的汇编文件,它们是不同的.从某种意义上讲,结果.obj是不同的.
仍然没有理由为什么会发生这种情况.

更新qcc上面 的命令不是执行的实际编译器命令:qcc是编译器"重定向器",它将调用与-V参数匹配的编译器."真正的"编译器调用是这样的:

C:/work/Proj/QNX_SDK/host/win32/x86/usr/lib/gcc/arm-unknown-nto-qnx6.5.0eabi/4.4.2/cc1plus -Wall -O3 -ggdb3 -DBUILD_VERSION= -DPASLOGOPTIONS=0x02 -DPASLOGAPPZONES=31,23,30,9,8,3 -DNS1_5PORT -DBOARD_TYPE=PRODUCTION …

c++ gcc boost qnx qcc

5
推荐指数
1
解决办法
743
查看次数