C++ #没有找到stdafx.h中的定义,我必须将它们复制粘贴到每个文件中 stringize.h:

C++ #没有找到stdafx.h中的定义,我必须将它们复制粘贴到每个文件中 stringize.h:,c++,visual-c++,C++,Visual C++,如果我#在我的.cpp中包含这个文件,一切正常。但如果我将其包含在stdafx.h中,然后将stdafx.h包含在my.cpp文件中,则这些定义是未知的: SomeFile.cpp 警告C4083:应为“字符串”;找到标识符“\u TODO” 我们使用#ifndef和#pragma一次保护,但在每个cpp文件的开头放置“include stdafx.h并不是为了手动保存我吗?我们有“使用预编译头”“已启用。是否通过stdafx.h使用预编译头?是。但是我认为他们让这些内容在全球范围内都可以使用-

如果我
#在我的.cpp中包含这个文件,一切正常。但如果我将其包含在stdafx.h中,然后将stdafx.h包含在my.cpp文件中,则这些定义是未知的:

SomeFile.cpp 警告C4083:应为“字符串”;找到标识符“\u TODO”


我们使用
#ifndef
#pragma一次
保护,但在每个cpp文件的开头放置
“include stdafx.h
并不是为了手动保存我吗?我们有“使用预编译头”“已启用。

是否通过stdafx.h使用预编译头?是。但是我认为他们让这些内容在全球范围内都可以使用-我误解了他们的意思吗?你能粘贴stdafx.h的内容吗?预编译头的目的是通过减少需要处理的
#include
预处理指令的数量来减少编译时间。@John我不知道你的意思。然而,MSVC的预编译头有一些局限性,根据我的经验,还有bug和不一致性。所以有两件事你应该试试:1。全部重建。2.禁用预编译头。如果其中任何一个解决了您的问题,那就是使用预编译头的问题。如果没有,还有其他事情发生,所以请发布你的stdafx.hIt的具体业务,所以我不能。但是考虑到
#include是最后一行,并且不在任何
#ifdef'块中,它肯定是(预)处理的,否则我们会看到更大的问题!
#ifndef STRINGIZE_H
#define STRINGIZE_H

#define _STR2(x) #x
#define _STR1(x) _STR2(x)
#define _WARN __FILE__ "("_STR1(__LINE__)") : Warning : "
#define _TODO __FILE__ "("_STR1(__LINE__)") : TODO : "

#endif// STRINGIZE_H
#include "StdAfx.h"
#pragma message(_TODO"test")