小编the*_*ine的帖子

Doxygen:如何链接到带注释的源代码?

我的库有一个非常简单的Main.cpp文件示例,我有一个教程页面.该页面看起来像这样:

/**
 *  @page simpleexample Simple Example
 *
 *  This example shows basic use. It is in \ref simple_example/Main.cpp.
 *
 *  And this is the description of the example.
 */
Run Code Online (Sandbox Code Playgroud)

现在它做的是它simple_example/Main.cpp通过指向该文件文档的链接替换引用.我希望它直接转到带注释的源代码.

有没有办法在不完全禁用每个文件的情况下执行此操作?我想拥有它,但我不喜欢人们需要单击Main.cpp链接,然后再单击Go to the source code of this file.内部链接.我不太关心文件部分中的链接如何表现,尽管我宁愿让它们转到文件文档,就像默认情况下那样.

我不想在教程页面中使用\example任何一个包含源代码,因为它已经存在于单独解释的小部分中.

c++ doxygen

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

在spring mvc上传图片

我正在使用spring 4和hibernate 4来上传数据库并从中检索图像.我已将多部分图像转换为字节数组并存储在数据库中.我的查询是如何从数据库中检索该图像并在jsp中显示字节数组而不将其存储在本地系统中.

java model-view-controller jsp hibernate spring-mvc

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

一种在C ++中交换两个引用的方法

这确实是交换两个引用的一个坏主意。这些引用不应重设,因此不可能。我知道的那么多。

我想要做的,就是交换两个引用,在某种程度上人们会交换两个指针:地址被交换,但没有数据。假设:

int a = 0, b = 1;
int *pA = &a, *pB = &b;
std::swap(pA, pB);
Run Code Online (Sandbox Code Playgroud)

现在* pA为1,* pB为0,但是a仍然为0,b仍然为1。但是,对于引用,这是不可能的:

int a = 0, b = 1;
int &rA = a, &rB = b;
std::swap(pA, pB);
Run Code Online (Sandbox Code Playgroud)

现在,引用被交换了,但是原始值也被交换了。我唯一能想到的是:

template <class _Ty>
struct resetable_ref {
    _Ty &ref;

    inline resetable_ref(resetable_ref &r)
        :ref(r.ref)
    {}

    inline resetable_ref(_Ty &_ref)
        :ref(_ref)
    {}

    inline resetable_ref &operator =(resetable_ref &r)
    {
        if(sizeof(resetable_ref) == sizeof(void*)) // compile-time constant (true)
            *reinterpret_cast<void**>(this) = *reinterpret_cast<void**>(&r);
        else
            memcpy(this, &r, sizeof(resetable_ref)); …
Run Code Online (Sandbox Code Playgroud)

c++ pointers reference

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

Windows 控制台应用程序 - 关闭事件的信号

在 Windows 控制台应用程序中,可以ctrl+c使用以下命令捕获按下的按钮:

\n\n\n\n
#include <stdio.h>\n#include <signal.h>\n\nvoid SigInt_Handler(int n_signal)\n{\n    printf("interrupted\\n");\n}\n\nint main(int n_arg_num, const char **p_arg_list)\n{\n    signal(SIGINT, &SigInt_Handler);\n    getchar(); // wait for user intervention\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xc3\x97这很有效,但如果用户按下关闭控制台窗口的十字键,它根本不起作用。有这方面的信号吗?

\n\n

我需要这个的原因是我有一个 CUDA 应用程序,如果在计算某些内容时关闭它,它往往会导致计算机崩溃。该代码是多平台的,因此我更喜欢使用信号而不是SetConsoleCtrlHandler. 有办法吗?

\n

c signals console-application windows-console

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

如何实现fma()

根据文档,有一个fma()功能math.h.这非常好,我知道FMA如何工作以及如何使用它.但是,我不太确定这在实践中如何实施?我最感兴趣的是x86x86_64架构.

是否存在FMA的浮点(非向量)指令,可能是IEEE-754 2008定义的?

是使用FMA3还是FMA4指令?

在依赖精度的情况下,是否存在确保使用真实FMA的内在因素?

floating-point instruction-set ieee-754 fma

5
推荐指数
3
解决办法
1372
查看次数

Doxygen 和长类名

我有一个不错的 C++ 项目,其中广泛使用模板编程,但这并不是重点。关键是我的一些类名(带有所有模板参数)变得很长。我使用 Doxygen 作为文档。

这通常不会成为问题,但最近我注意到类列表不可读,因为类名太长而无法在屏幕上显示。

有没有办法让 Doxygen 将类列表中的类名分成更多行?也许有一种方法可以在保留通用模板类的同时从类列表中隐藏模板类的特化?有更好的解决方案吗?

通过将类隐藏在命名空间中,然后立即将此命名空间导入全局命名空间,我设法找到了一个愚蠢的解决方法,这样这些类的名称就不会出现在列表中,除非单击命名空间或详细信息级别为增加。明显的缺点是这些类现在没有出现在列表中(其中一些非常重要,我希望它们在那里)。

我还可以删除以下样式:

.directory td.entry {
    white-space: nowrap;
}
Run Code Online (Sandbox Code Playgroud)

这可以通过保存以下内容来完成:

.directory td.entry {
    white-space: normal;
}
Run Code Online (Sandbox Code Playgroud)

asmodify.css并在HTML_EXTRA_STYLESHEET. 然而,有更多的自动换行标签(例如flex-wrap),因此可能需要额外的编辑。

c++ doxygen

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

在内核代码中检测 OpenCL 设备供应商

我正在编写一些特定于平台的优化,虽然我知道我可以解析主机代码中的供应商字符串并使用该-D选项将其发送到内核,但在内核中检测供应商可能更方便直接,无需主机参与(这样即使不访问主机源代码也可以优化内核,...)。

到目前为止,我已经提出以下几点:

#ifdef __NV_CL_C_VERSION
/**
 *  @def NVIDIA
 *  @brief defined when compiling on NVIDIA GPUs
 */
#define NVIDIA
#endif // __NV_CL_C_VERSION

#if defined(__WinterPark__) || defined(__BeaverCreek__) || defined(__Turks__) || \
    defined(__Caicos__) || defined(__Tahiti__) || defined(__Pitcairn__) || \
    defined(__Capeverde__) || defined(__Cayman__) || defined(__Barts__) || \
    defined(__Cypress__) || defined(__Juniper__) || defined(__Redwood__) || \
    defined(__Cedar__) || defined(__ATI_RV770__) || defined(__ATI_RV730__) || \
    defined(__ATI_RV710__) || defined(__Loveland__) || defined(__GPU__) || \
    defined(__Hawaii__)
#define AMD
/**
 *  @def AMD
 *  @brief defined when compiling on …
Run Code Online (Sandbox Code Playgroud)

macros opencl

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

CMake如何检测更改的文件

我有一个“C”/C++ CMake 项目,运行良好。但是,我有时会在时间略有不同的远程集群上(重新)构建。这台机器运行 Linux,我正在使用make. 我想知道是否有一些 make/CMake 方法可以更改检测文件更改的方式,例如更改为 MD5 或 diff 而不是使用时间戳。否则我想我要么必须忍受恒定make clean/make -j周期,要么必须在每次使用该特定服务器时更改我的当地时间。

我正在查看 CMake 文档,看看是否有一个标志可以更改这些设置,但没有找到。这在没有 RTC 的平台(例如 Raspberry)上如何工作?

makefile cmake

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

OpenCL内置函数'select'

我不清楚内置OpenCL功能的目的是什么select.请有人澄清一下吗?

从OpenCL规范:

函数选择(gentype a,gentype b,igentype c)

返回:对于矢量类型的每个分量,result [i] =如果设置了c [i]的MSB?b [i]:a [i].

在这种情况下,什么是MSB?我知道MSB代表最重要的一点,但我不知道它与这种情况有什么关系.

opencl

4
推荐指数
1
解决办法
3351
查看次数

这个C++类型

我正在用C++编写一些模板代码,如果我能确定类型,我就会使代码更短/更好/更有用this.我不想使用C++ 0x,因为代码是与旧编译器向后兼容的.我也不想使用BOOST.我所拥有的是:

struct MyLoop {
    template <class Param>
    void Run(int iterations, Context c)
    {
        MyUtility<MyLoop>::template WrapLoop<Param>(iterations, c);
    }
};
Run Code Online (Sandbox Code Playgroud)

这可以用于一些有趣的循环优化.我不喜欢MyLoopMyUtility模板特殊化.使用C++ 0x,可以使用以下内容:

struct MyLoop {
    template <class Param>
    void Run(int iterations, Context c)
    {
        MyUtility<decltype(*this)>::template WrapLoop<Param>(iterations, c);
    }
};
Run Code Online (Sandbox Code Playgroud)

这样做的好处是不重复类的名称,整个事物可以隐藏在一个宏中(例如一个被调用的宏DECLARE_LOOP_INTERFACE).有没有办法在没有BOOST的情况下在C++ 03或更早版本中执行此操作?我将在Windows/Linux/Mac上使用该代码.

我知道语法很难看,它是一个研究代码.请不要介意.

c++ types

4
推荐指数
1
解决办法
156
查看次数