在C++中,如何使我的项目中的每个文件都可以看到typedef?

use*_*536 14 c++ typedef global

我有一个typedef

 typedef unsigned int my_type;
Run Code Online (Sandbox Code Playgroud)

在文件中使用.我想让它在我的所有文件中都可见,而不是把它放在一切包含的头文件中.我不想去头文件路由,因为它代表这将是头文件中的唯一声明(并且似乎没有必要为此添加文件).

有没有办法做到这一点?

如果相反,我有:

typedef X my_type;
Run Code Online (Sandbox Code Playgroud)

其中X是一个类,我是否需要在任何地方包含Xh并在Xh结束时使用typedef?

Bil*_*eal 18

我不想去头文件路由,因为它代表这将是头文件中的唯一声明(并且似乎没有必要为此添加文件).
有什么问题?似乎没必要不惜一切代价避免创建文件.

有没有办法做到这一点?
不是我所知道的.

我需要在任何地方都包含Xh并在Xh结束时使用typedef吗?
不,但这可能是最好的事情.你应该这样做的唯一原因是,如果X是一个模板,你需要模板在标题中.


Kon*_*rad 9

据我所知,没办法解决这个问题.你为什么不用你想要的声明来制作一个globals.h头文件并包含它?

不要试图将你的typedef埋葬在某个地方,并希望"因为其他所有东西都悬挂在标题上",它就像添加一个全局标题一样好 - 拥有非自包含的标题是非常糟糕的做法.

此外,为了防止混乱全局命名空间创建自己的:

namespace MyTypes
{
    typedef A B;
    const unsigned int g_nMyGlobalType = 10;
    // etc.
}
Run Code Online (Sandbox Code Playgroud)

这样你可以以一种不错的整洁方式使用你的全局变量:

MyTypes::B myVar; // etc
Run Code Online (Sandbox Code Playgroud)