【发布时间】:2014-07-12 20:34:12
【问题描述】:
我正在使用 Windows API 编写 C 程序。每个主要功能都有自己的文件,原型和包含等等都有一个标题:
// Headers & global constants
#pragma once
#define _WIN32_LEAN_AND_MEAN
#include <Windows.h>
#include <WindowsX.h>
#include <Windef.h>
#define szClassName TEXT("EthicsPresentationWnd")
// Prototypes
LRESULT CALLBACK WindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
BOOL CALLBACK FontProc1(HWND hWnd, LPARAM lParam);
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd);
ATOM RegisterWindow(HINSTANCE hInstance);
让我恼火的是#define szClassName 行。我不喜欢使用宏,并且希望有一个适当的全局变量wchar_t szClassName[],但如果我这样做,那么链接器会抱怨在每个包含标头的模块中定义了多个变量。
我认为#pragma once 指令会阻止这种情况,但它没有。
有没有办法解决这个问题?
【问题讨论】:
标签: c winapi global-variables