草庐IT

c++ - gnu c++ 中是否有 __if_exists 的等价物?

__if_exists是微软特定的关键字,用于在编译时测试标识符是否存在:msdn:__if_exists它在“伪造的”模板特化方面非常有用,因为在某些情况下,它提供了一种比“真正的”特化或重载等其他方法更简单、可读且性能更好的方法。但现在我必须将一个大项目移植到gnuc++,我想如果我不得不为我使用它的(诚然很少的)场合找到其他方法,我会开始有点哭泣 最佳答案 在我看来,这是一个蹩脚的关键字......不幸的是,据我所知,它不存在于gcc中,但我可能根本不知道它。处理此问题的正确C++方法是通过使用概念,即根据某些要求调整类型上执

C++ [[gnu::visibility ("default")]] 与 Windows 和 Linux 上的 __declspec(dllexport)

我需要用C++创建一些共享库,我使用linux作为我的开发者操作系统。我知道如果我想通过dlsym/LoadLibrary加载它们,我需要让符号可见。所以在Linux中,我所有的符号都遵循这种模式:extern"C"[[gnu::visibility("default")]]voidf();我在启用C++11的情况下使用了clang,并且能够在我的主机程序中加载f。当我转移到Windows时,我使用启用了C++11的GCC4.8.2,并且该模式在Windows机器上也适用于LoadLibrary。(我需要使用C++11来实现新的属性语法)。我知道在Windows上我需要使用__decl

c++ - 在c++中使用gsl时如何避免静态成员函数

我想在C++类中使用GSL而无需将成员函数声明为static。这样做的原因是因为我不太了解它们并且我不确定线程​​安全性。根据我的阅读,std::function可能是一个解决方案,但我不确定如何使用它。我的问题归结为如何删除g声明中的static?#include#include#include#include#include#include#include#includeusingnamespacestd;classA{public:staticdoubleg(double*k,size_tdim,void*params){doubleA=1.0/(M_PI*M_PI*M_PI);

c++ - 为什么使用 clang -std=gnu++11 时此 C++ 代码会编译?

使用clang-std=gnu++11-ctest.cpp编译:voidtest(){[[randomtexthere]]if(0){}}但这会产生错误main.cpp:3:1:error:expectedstatement:voidtest(){[[randomtexthere]]}如果我使用clang-std=gnu++11-S-emit-llvmmain.cpp编译并查看LLVM代码,它看起来像[[...]]行无效:definevoid@_Z5testv()nounwinduwtablessp{retvoid}有什么想法吗?错误或某些C++11语法或GNU扩展语法?我正在使用Xc

c++ - GNU ld 找不到存在的库

我在这里玩弄的包是相当未知的,但问题是相当普遍的。基本上,我正在尝试使用C++扩展编译Python模块(称为rql)。该扩展使用名为gecode的外部框架,其中包含多个库。我编译了gecode并安装在本地。现在,让输出说明一切:red@devel:~/build/rql-0.23.3$echo$LD_LIBRARY_PATH/home/red/usr/libred@devel:~/build/rql-0.23.3$ls$LD_LIBRARY_PATH|greplibgecodeintlibgecodeint.solibgecodeint.so.22libgecodeint.so.22.

c++ - 如何在 GNU Autotools 项目中包含 Boost?

我的项目使用GNU自动工具编译(aclocal&&autoconf&&./configure&&make)。我想使用Boost,并且我希望其他人也能够编译它。我应该将Boost放在我的项目目录中,还是依赖于系统的Boost?我应该如何告诉autotools使用Boost?我用谷歌搜索并发现许多声称可以执行此操作的m4文件-但我应该将这些m4文件放在哪里?我可以将一个存储在我的/usr/share/aclocal目录中,但这对其他想要使用./configure&&make编译项目的人没有帮助。 最佳答案 TheArchive有AX_B

c++ - 如何使用 shell magic 使用 GNU etags 创建递归 etags?

标准的GNUetags不支持目录的递归遍历,就像exuberantctags-R所做的那样。如果我只能访问GNUetags,我如何使用bashshellmagic让etags为所有C++文件*.cpp和*.h生成一个TAGS表>当前目录和当前目录下的所有目录中的文件以递归方式在当前目录中创建一个TAGS表,该表具有emacs解析TAGS表条目的正确路径名。 最佳答案 EmacsWiki通常是常见问题或最佳实践答案的良好来源。对于您的具体问题,有适用于Windows和Unixen的解决方案:http://www.emacswiki.o

c++ - 你推荐什么 GNU make 替代品?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭6年前。Improvethisquestion想象一下,您可以为新的C++项目自由选择GNUmake等工具。你会选择什么?有可用的替代品吗?它应该有/是命令行界面“容易”理解易于设置默认的c++项目可能支持src/bin分离,这在Java中很常见可能不会对其他软件/库添加太多依赖平台独立(新)特点:像make一样以人类可读的方式构建规则/模板递归爬行目录并在没有其他目录时应用规则“生成文件”异常配置注意:GNUm

c++ - 如何在 C/C++ 程序中嵌入 GNU Octave?

我想使用GNUOctave库计算一些矩阵算法。我知道我可以使用Octave的C/C++API进行基本使用。但是我想使用的方法不在Octave的默认包中。那么如何使用Octave的controlpackage在C/C++程序中? 最佳答案 像这样嵌入.cpp#include#includeintmain(intargc,char*argv){  int embedded;  octave_main(argc,argv,embedded=0);    return embedded;}然后mkoctfileembed.cpp--link

带有 freertos 的 gnu arm cortex m4 上的 C++ 异常处理程序

2016-12年更新现在还有一个针对此行为的最小示例:https://community.nxp.com/message/862676我正在使用带有freertos的ARMCortexM4,使用freescalesfreedomKinetisIDE(gnuarm工具链)。问题是try{throw4;//oldscenarioalsonotworking:throwstd::runtime_error("wut");}catch(...){}导致CPU暂停,并且在try之后或(当添加了某些代码时)catch处理程序中的代码未执行。组装可以在这里找到:https://gist.github