今天第一次遇到多文件包含的问题,一般来说C++开发都是声明放在头文件里,实现放在源文件里,然后使用时包含头文件,头文件为了避免被重复编译,一般来说要加个杂注“#pragma once ”,或者直接用“#ifndef XXX ....#endif”来处理。好吧,这些我都知道,偏偏各种办法都用遍了,extern也加了,就是一直给我报下面那个错:
折腾了半天,终于让我给折腾好了。
全局变量应该在头文件中声明并加extern关键字,如下所示:
- #pragma once
- #include<SDL.h>
- /* 初始化窗口有关的各种变量 */
- int initWindow(char * title);
- /* 关闭Window */
- void releaseWindow();
-
- // 窗口
- extern SDL_Window * window;
-
- // 渲染器
- extern SDL_Renderer * render;
- // 窗口大小
- const int WINDOW_W = 330;
- const int WINDOW_H = 500;
然后使用时,在源文件中初始化(暂时不知道为什么,先这么写),如下:
- // 窗口
- SDL_Window * window = nullptr;
- // 渲染器
- SDL_Renderer * render = nullptr;
最后编译通过。这应该是C++新手容易犯的错吧。