Pet*_*riu 1 c++ iostream wstring
我有两个文件,my_program.cpp它的标题my_program.h.
my_program.cpp只包含这个:
#include "my_program.h"
using namespace std;
Run Code Online (Sandbox Code Playgroud)
my_program.h包含指向返回a的函数的指针wstring,如下所示:
using namespace std;
typedef wstring (*my_function)(wstring, int, int, int, int);
Run Code Online (Sandbox Code Playgroud)
程序不会在这种状态下编译(在typedef处停止...说ISO C++禁止声明'wstring'没有类型),但如果我#include <iostream>之前#include "my_program.h"在.cpp文件中添加,程序会奇迹般地编译.
为什么会这样?我只是希望我没有犯下愚蠢的错误,现在我会被嘲笑.
你真的应该包括<string>.
从事物的声音,你的编译器<iostream>碰巧包含<string>,所以它的工作原理,但在不同的编译器上它可能没有.C++允许标准头包含其他标准头,但不需要它.在某些情况下,你只得到一个类的声明,所以有些东西有效,有些则没有.
至少根据我的经验,这也是一个问题,可能会从一个版本的编译器转换到另一个版本,所以即使你不打算移植到其他任何版本,你的代码也可能因为看似微不足道而退出工作升级,除非您包含正确的标题.
| 归档时间: |
|
| 查看次数: |
405 次 |
| 最近记录: |