这里有一个代码来演示一个恼人的问题:
class A {
public:
A():
m_b(1),
m_a(2)
{}
private:
int m_a;
int m_b;
};
Run Code Online (Sandbox Code Playgroud)
这是Console视图上的输出:
make all
Building file: ../test.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"test.d" -MT"test.d" -o"test.o" "../test.cpp"
../test.cpp: In constructor 'A::A()':
../test.cpp:9: warning: 'A::m_b' will be initialized after
../test.cpp:8: warning: 'int A::m_a'
../test.cpp:3: warning: when initialized here
Finished building: ../test.cpp
Run Code Online (Sandbox Code Playgroud)
问题是在Problems视图中我会看到3个单独的警告(输出中包含警告字的行),而输出中确实有4行描述了一个问题.
有什么我想念的吗?
补充问题.也许这是Eclipse精神,但有一种方法可以像大多数IDE一样使Console视图可点击(例如Visual Studio,emacs ......)
谢谢迪马
我一直在用头撞砖墙,所以任何帮助将不胜感激:)
我创建了两个具有以下结构的项目。
build2 使用内部构建器编译得很好。然而,build1 甚至没有开始构建,因为它报告
> **** Rebuild of configuration Release for project CoreMarkTs1 ****
>
> **** Internal Builder is used for build ****
> Build error
> Path must include project and resource
> name: /build1
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激。
我在 Linux C++ 上遇到 _DEBUG 宏问题。我尝试使用这样的东西:
#ifdef _DEBUG
cout << "Debug!" << endl;
#endif
Run Code Online (Sandbox Code Playgroud)
但是当我在IDE中选择“调试”时,它不起作用。然而它在 Windows 上运行。我在 Linux 上使用 Eclipse IDE 进行 C++ 编码。
大家好,我试图阻止 Eclipse 中的自动格式化在末尾有 throw() 语句的函数之后缩进我的左大括号和右大括号。
例如
void function(std::string param) throw()
{
}
Run Code Online (Sandbox Code Playgroud)
自动格式化后将如下所示:
void function(std::string param) throw()
{
}
Run Code Online (Sandbox Code Playgroud)
但每次我自动格式化代码时,它都会继续在括号前面添加另一个选项卡。任何人都知道我如何关闭此功能,或者这是一个错误
Eclipse 信息:版本:Juno 发行版本 ID:20120614-1722 使用 CDT
注意: 我正在使用我自己的代码风格配置文件。
我的源代码中有:
// foo.cpp
struct foo
{
foo() {}
#ifdef I_WANT_THIS_FEATURE
void bar() {}
#endif
};
Run Code Online (Sandbox Code Playgroud)
在我的 Makefile 中我有
foo.o: foo.cpp
g++ -c -DI_WANT_THIS_FEATURE foo.cpp -o foo.o
Run Code Online (Sandbox Code Playgroud)
这可以从命令行以及我在 Eclipse 中创建的外部构建器(它基本上定义了一些环境变量和调用make)进行良好的编译,并且我可以调用foo::bar().
但是,在 Eclipse CDT 源代码编辑器中,我定义的部分foo::bar()具有灰色背景(表明foo::bar()不会包含在构建中),并且类型对象上的代码完成foo不建议bar()作为可以调用的方法。
如何使用I_WANT_THIS_FEATURE自定义 makefile 在 Eclipse CDT makefile 项目中定义宏,以便源代码编辑器和代码完成可以识别该宏?
我正在将 eclipse cdt 与 Visual Studio 2015 工具链一起使用。在对所有不同的选项进行了大量修改之后,我现在几乎可以使用预编译的头文件了。在预构建步骤中,我从 stdafx.cpp 创建预编译头文件并在其他文件中使用它。编译运行良好,但在链接时出现以下错误:Logger.obj : error LNK2011: precompiled object not linked in; image may not run
Logger.obj 是从 Logger.cpp 创建的,它是我自己的文件之一,并在此过程中被编译。我想这可能是因为整个 Logger 类是一个模板,并且 Logger.cpp 中没有真正的代码,但即使尝试使用 stdafx.h 中包含的内容也不会改变这一点。
有没有人可能知道错误的实际含义?我在拥有多个库时看到了一些帖子,但就我而言,它实际上是我自己的文件之一,而不是来自库。我将不胜感激任何提示!
首先,我知道-std = c ++ 11标志以启用c ++ 11支持以及放置它的位置.我已经追加-std=c++11到Project -> Properties -> C/C++ Build -> Settings -> Tool Settings -> GCC C++ Compiler -> Miscellaneous -> Other Flags和编译只是正常工作.但是,如果我想使用的索引不相处,例如emplace功能std::map(C++ 11),也不会找到布设功能.
#include <map>
int main() {
std::map<int, int> data;
data.emplace(5,5);
Run Code Online (Sandbox Code Playgroud)
我还查看了这些相关问题:
更新:现在我已经玩过它甚至无法识别std :: map类型,虽然编译精细和eclipse找到所有标题...
使用 Eclipse Luna Service Release 2 (4.4.2)、C 和 C++,尽管此问题与 C 代码有关。在 Win XP 上运行 Eclipse。
我正在使用一个有 2 个项目的系统。这些项目通过属性 - 项目引用链接。
一些引用工作正常:我可以在一个项目中的符号上使用“开放声明”,它会立即跳转到第二个项目中定义它的正确位置。然而,偶尔我会发现一个符号会弹出一个“打开声明”对话框,其中列出了 2 个替代方案,这两个选项都是完全相同的文件(通过完全相同的路径)。其中一个选择给出了正确的结果,另一个给出了几乎相同的结果,只是少了几行。另外,Eclipse(解析器)认为存在一些语法错误,而实际上并没有错误。我已经在两个项目上重建了索引,尝试将两个项目相互引用,并且仅以一种方式引用。我已经停止了 Eclipse 并重新启动了它。
有什么解决办法吗?
我正在尝试使用 Eclipse Mars 为 STM32F4 Discovery 板构建应用程序。我特别想使用 SPI 库。我已在主程序中包含相应的头文件,但收到错误消息,指出我尝试使用的函数未定义。
稍微戳了一下,我意识到该项目的大部分源文件都是灰色的,图标上有一条横线。
我能找到的最多的是人们在谈论整个文件夹是如何变灰的。我尝试过寻找“灰色图标”、“删除线”以及灰色、图标和栏的任意组合,但无济于事。有谁知道这意味着文件变灰并被删除?
我想在Eclipse解析源代码树时只包含一些代码.目前,我在做什么^ H ^ H ^ H ^ H ^ H尝试做的是添加一个自定义预处理器宏 - 使用Eclipse的帮助| 偏好| C/C++ | 建立| 设置发现 - 并-DECLIPSE_BUILTIN在那里插入各种命令行.
所以我想知道是否已经有一个标准的,一个默认的宏,预处理器(和索引器?)定义为"识别"自己这样的代码 - 以免给我带来麻烦.
eclipse-cdt ×10
eclipse ×7
c++ ×5
build-error ×1
c++11 ×1
compilation ×1
debugging ×1
eclipse-juno ×1
indexing ×1
linux ×1
parsing ×1