小编Lut*_*her的帖子

让Clang在Windows上工作

我已经按照以下一步一步的指南进行了操作,经过一些小小的尝试后,我已经设法使用代码编译clang:blocks和MinGW.太好了,所以现在我可以将Clang模块添加到eclipse(为什么有一个IDE,当你可以有四个)并开始编译.

我可以编译一个不使用标准库的简单程序,但不幸的是,当我尝试编译它时:

#include <iostream>
using namespace std;

int main()
{
    cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

首先我得到这个:

..\src\test.cpp:9:10:致命错误:找不到'iostream'文件

所以我将Mingw标题添加到include路径; 然后我明白了:

'致命错误:'找不到位/ c ++ config.h'文件'

这很奇怪.如果该文件不在'bits /'中,为什么MingW会工作?它是内置于编译器吗?没关系,我找到它的实现并在'bits /'中创建文件.

然后我得到了一大堆错误,包括奇怪的错误,似乎暗示clang没有正确实现预处理器,否则我对预处理器的理解是不正确的.

C:\Program Files\CodeBlocks\MinGW\lib\gcc\mingw32\4.4.1\include\c++/cwchar:45:26: error: expected value in expression
#if _GLIBCXX_HAVE_WCHAR_H
Run Code Online (Sandbox Code Playgroud)

还有更多这样的人.应该是这样的

#if defined(_GLIBCXX_HAVE_WCHAR_H) 
Run Code Online (Sandbox Code Playgroud)

要么

#ifdef _GLIBCXX_HAVE_WCHAR_H?
Run Code Online (Sandbox Code Playgroud)

如果他们是MinGW标准库是错误的.

我假设我错误地认为可以放入clang替换gcc并且它不适用于gnu标准库.任何确认或否认这一点,以及证据支持将是最受欢迎的!

那么,有没有人有一个万无一失的方法来在Windows PC上进行clang编译?网上有关于铿锵声的信息,特别是关于窗户的信息.

我真的很想让clang和LLVM工作,因为它们从我读过的内容中听起来很棒.任何帮助,将不胜感激.

谢谢.

c++ mingw eclipse-cdt codeblocks clang

40
推荐指数
4
解决办法
5万
查看次数

Code :: blocks中的调试器命令行参数

在Code :: blocks中调试程序时,如何指定要发送到正在调试的程序的命令行参数.我找不到在哪里为我的生活设置这个,谷歌搜索带来调试编译器本身的设置,而不是编译器编写的程序.遗漏将是一件奇怪的事情.

谢谢,

蒂姆.

gcc gdb codeblocks

10
推荐指数
1
解决办法
5581
查看次数

Visual Studio natvis 语句的局部变量

我目前正在为 natvis 中的日期类型编写可视化工具。日期类型以通常的 Unix 方式存储自 1970 年以来的秒数,但如果不使用临时变量,从中导出年、月和日则极其冗长。我希望能够存储工作变量,以便以合理的方式评估可视化工具。这可能吗?

我得到的解决方案如下所示:

struct SLowResAbsoluteTime
{
    SLowResAbsoluteTime() : mTime(0) { calcDOE(); }
    SLowResAbsoluteTime(int year, SDate::EMonth m, SDate::EDayOfWeek day, UINT8 hour, UINT8 minute, UINT8 seconds);
    SLowResAbsoluteTime(const SDate &date);
    SLowResAbsoluteTime(unsigned long long time) : mTime(time) { calcDOE(); }
    SLowResAbsoluteTime(const SLowResAbsoluteTime &other) : mTime(other.mTime) { calcDOE(); }

    SDate getDate() const; //calculate date object from given time
    UINT32 getHour() const; 
    UINT32 getMinutes() const;
    UINT32 getSeconds() const;

    bool operator < (const SLowResAbsoluteTime &other) const { return mTime < other.mTime; } …
Run Code Online (Sandbox Code Playgroud)

c++ visual-studio natvis

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

WASM链接错误:函数签名不匹配

我已经通过 emscripten 使用 WASM 几个星期了,并且取得了良好的进展,直到出现此错误:

exception thrown: RuntimeError: function signature mismatch,RuntimeError: function signature mismatch
Run Code Online (Sandbox Code Playgroud)

这种情况开始发生在以前可以工作的代码中,似乎与 WASM 缺乏对 javascript 中 64 位整数的支持以及文件管理中使用的偏移量有关。我做了一个孤立的案例:

#include <iostream>

int main(int argc, char const *argv[])
{   
    char test[30];
    std::cout << __LINE__ << std::endl;
    FILE *f = fopen("minimal_call_dispatch.cpp","ra");
    std::cout << __LINE__ << std::endl; 
    fseek(f, 100, SEEK_SET);
    std::cout << __LINE__ << std::endl;
    fclose(f);
    std::cout << __LINE__ << std::endl; 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

建筑:

call emcc -o ./test.js test_file.cpp -s WASM=1 -s NO_EXIT_RUNTIME=1 -std=c++1z 
Run Code Online (Sandbox Code Playgroud)

由于上述错误,在“fseek”失败之前会输出“6\n8\n”。

在此过程中,我怀疑 wasm 正在尝试使用与具有 64 位整数而不是 …

c++ mismatch emscripten

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

让 eclipse 识别新的源文件夹

抱歉,如果之前有人问过这个问题——如果有的话,我显然是在寻找错误的东西。这不是我第一次被 java、eclipse 以及它们如何找到源文件所困扰。

我有一个 Java 源文件夹,我希望将它们复制到“src/com”文件夹中,并使其“正常工作”。如果我直接复制文件,eclipse 和 java 无法识别它们,所以我假设某处有一个文件告诉 IDE 那里有一个包含在项目中的文件文件夹。我想知道如何通过配置文件和 IDE UI 来做到这一点。

不幸的是,两个明显的文件(.project 和 .classpath)似乎根本没有引用现有目录(.classpath 包含一行

<classpathentry kind="src" path="src"/>

我认为会自动扫描该目录中的文件,但它似乎没有)

最后,.classpath 和.project 是java概念还是eclipse概念?

感谢您的时间。

java eclipse classpath

2
推荐指数
1
解决办法
2460
查看次数

在win32中重定向stdout不会重定向stdout

我正在尝试重定向stdout,以便Windows应用程序中的printf将转到我选择的文件.

我这样做:

outFile = fopen("log.txt", "w");
*stdout = *outFile;
setvbuf(stdout, NULL, _IONBF, 0);
Run Code Online (Sandbox Code Playgroud)

但printf仍然写入控制台(或基于GUI的win32应用程序无处可写)

我可以通过这样做重定向'std :: cout':

outFileStr = std::ofstream(outFile);         
std::cout.rdbuf(outFileStr.rdbuf());
Run Code Online (Sandbox Code Playgroud)

但是printf似乎在做自己的事情.不幸的是,我需要重定向printf,因为我正在尝试将python集成到C++框架中,并且它似乎依赖于printf而不是std :: cout.

std :: cout'似乎被重定向但不是printf.

c c++ printf

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