【发布时间】:2017-02-25 19:52:24
【问题描述】:
以下是相关文件中的一些代码,称为 Global.h,它在其他头文件中使用,似乎编译得很好:
#pragma once
enum SType {null, lab, assignment, testPrep};
enum Code {none, 123, 222, 333, 432};
template<typename D>
bool validate(D task = string, D date = string) {
bool result = true;
if (task.size() < 3) {
cout << "Task too simple, please elaborate." << endl;
result = false;
}
else if (task.size() > 50) {
cout << "Task too detailed. Only 30 chars allowed." << endl;
task.empty();
result = false;
}
if (date == "02/20/93") {
date.empty();
date = "My birthday!";
}
return result;
}
如您所见,我可以使用字符串和 ostream 对象,而无需声明使用命名空间或特定文件。显然这意味着 Global.h 正在从其他地方获取信息,但我很好奇这些信息来自哪里?我一直认为,如果头文件已包含在文件本身的#include 指令中,则头文件只会从其他文件中重新转换代码,因此我不确定这是如何发生的,并且很想知道发生了什么。
【问题讨论】:
-
您的意思是您使用
g++ -c Global.h编译它并且它可以工作? -
@Jean-Francois Fabre 它在visual studio中工作,不确定gcc编译器会做什么
标签: c++ include translation-unit