查找预编译的头文件时跳过头文件

时间:2013-03-23 17:09:32

标签: c++

你能帮我理解问题所在吗? 我似乎已经包含了stdafx.h。 然后我尝试重建解决方案。试图清理解决方案。 无论如何我得到了这个:

c:\...\tetris\figure_factory.cpp(2): warning C4627: '#include "figure_factory.h"': skipped when looking for precompiled header use
1>          Add directive to 'StdAfx.h' or rebuild precompiled header
1>c:\...\tetris\tetris\figure_factory.cpp(3): warning C4627: '#include "figure.h"': skipped when looking for precompiled header use
1>          Add directive to 'StdAfx.h' or rebuild precompiled header

当然还有缺少头文件后的全套错误。

我的档案:

figure_factory.cpp


#pragma once
#include "figure_factory.h"
#include "figure.h"
#include "stdafx.h"
#define stop __asm nop

Figure I;
I.shape = {
            {{0, 0, 0, 0}, 
             {1, 1, 1, 1},
             {0, 0, 0, 0},
             {0, 0, 0, 0}},
......



figure_factory.h

#pragma once
#include "figure.h"
#include "stdafx.h"
#define stop __asm nop


class Figure_Factory{
    const int figure_number = 5; 
    const int colour_number = 5; 

    public:
        Figure get_figure(int type, int colour);
}

2 个答案:

答案 0 :(得分:7)

如果您使用预编译头文件和Microsoft编译器,

stdafx.h必须作为第一个包含文件。 并且您不得将其包含在其他包含文件中。 在#pragma once个文件

中,.cpp无效

答案 1 :(得分:1)

这是另一种可能性:您已经有一个标题为源文件的头文件。在Visual Studio中,右键单击头文件,然后在“配置属性”>中。一般>项目类型检查您有" C / C ++标题",不是" C / C ++编译器"。

通过输入< ClCompile>手动编辑.vcxproj文件时,这是一个很容易犯的错误。而不是< ClInclude>。