相关疑难解决方法(0)

Clang看不到基本标题

我试图用Clang在Fedora 20上编译简单的hello world,我得到以下输出:

d.cpp:1:10:致命错误:找不到'iostream'文件

#include <iostream>

我不知道如何解决它.

c++ clang llvm-clang c++11 clang++

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

警告:在C++模式下将'c-header'输入视为'c ++ - header'时,不推荐使用此行为

这个clang ++错误消息是什么意思,为什么我得到它?我似乎无法在互联网上找到任何关于它的东西......
clang: warning: treating 'c-header' input as 'c++-header' when in C++ mode, this behavior is deprecated

这是我的代码,

MergeSort.h:

#ifndef __MERGESORT_H__
#define __MERGESORT_H__

#include <iostream>
using namespace std;

class MergeSort;

class MergeSort
{
    public:

    MergeSort();
    MergeSort(const int* list, int length);
    ~MergeSort();

    friend ostream& operator<< (ostream& os, const MergeSort& ms);

    private:

    int* list;
    int len;
};

ostream& operator<< (ostream& os, const MergeSort& ms);
#endif
Run Code Online (Sandbox Code Playgroud)

MergeSort.cpp:

#include <iostream>
#include "MergeSort.h"

using namespace std;

MergeSort::MergeSort()
{
    list = new …
Run Code Online (Sandbox Code Playgroud)

c++ clang

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

clang无法独立解析我的.h文件

我正在使用libclang的python绑定,但我认为这个问题是由libclang而不是python绑定引起的.

我有一个标题 object.h

#ifndef OBJECT_H
#define OBJECT_H

class Object {
public:
  int run();
};

#endif
Run Code Online (Sandbox Code Playgroud)

并实施 object.cpp

#include "object.h"

int Object::run() {
  int a = 0;
  return a*a;
}
Run Code Online (Sandbox Code Playgroud)

如果我访问翻译单元的object.hAST,那么最后一个AST节点就是VAR_DECL class Object它.它不会访问public:...部分.如果我用clang直接检查语法就会抱怨我的头文件是错误的.

$ clang -Xclang -ast-dump -fsyntax-only object/object.h
object/object.h:4:1: error: unknown type name 'class'
class Object {
^
object/object.h:4:13: error: expected ';' after top level declarator
class Object {
            ^
            ;
TranslationUnitDecl 0x7f816102d2d0 <<invalid sloc>>
|-TypedefDecl 0x7f816102d7d0 <<invalid sloc>> __int128_t '__int128'
|-TypedefDecl 0x7f816102d830 <<invalid …
Run Code Online (Sandbox Code Playgroud)

clang libclang

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

clang-tidy 无法找到 stdlib 标头

今天我从源代码构建了 clang-tidy,我使用 clang++ 构建了它。构建完成后,我创建了一个指向可执行文件的符号链接,如下所示:

ln -s /path/to/build/bin/clang-tidy /usr/local/bin/clang-tidy
Run Code Online (Sandbox Code Playgroud)

然后我尝试在简单的项目(包含打印 helloworld 代码的单个 .cpp 文件)上使用带有 cmake 的 clang-tidy。这是我的 cmake 文件的样子:

project(Test)
cmake_minimum_required(VERSION 3.12.0 FATAL_ERROR)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
set(CMAKE_CXX_STANDARD 17)
set(CXX_STANDARD_REQUIRED)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

set(CMAKE_CXX_CLANG_TIDY
  clang-tidy;
  -checks=*;)

add_executable(Test
    helloworld.cpp)
Run Code Online (Sandbox Code Playgroud)

我在某处读到 cmake 的整洁仅适用于 Unix Makefiles & Ninja 生成器(或可能其他一些)。我通常使用 xcode 生成器,但我对这两个不太熟悉,所以我并不真正关心其他人。我已经尝试使用 Unix Makefiles 和 Ninja 生成和构建项目,但是我得到了这个错误:

/Users/xxxxxxx/Dev/VSCodePlayground/helloworld.cpp:2:10: error: 'string' file not found [clang-diagnostic-error]
Run Code Online (Sandbox Code Playgroud)

我找到了一些信息,这可能是因为 clang 找不到 libc++/stdlib 头文件。因此,我尝试了带-v参数的建议编译(成功而没有错误),并在包含目录中获得了此输出:

#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/11.0.0/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks …
Run Code Online (Sandbox Code Playgroud)

macos clang clang-tidy

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

标签 统计

clang ×4

c++ ×2

c++11 ×1

clang++ ×1

clang-tidy ×1

libclang ×1

llvm-clang ×1

macos ×1