线程-mfc中定义大量宏的问题

问题描述

mfc中定义大量宏的问题
我定义了大量的宏,在cmainframe和一个共有类(用于存放一些静态函数和变量,主要是为了线程函数中使用全局变量)中里面的一个函数中需要使用到,我直接把它们放在一个头文件中然后include,就报了
error LNK2005: ""struct Zeni_MTS_Rolypon_InOut InOutRoly"" (?InOutRoly@@3UZeni_MTS_Rolypon_InOut@@A) already defined in bowei.obj这样一堆问题。

还想问问,线程函数只能是全局或者静态函数,那在MFC它们应该在哪被定义。我之前是定义在Cxxxapp的theapp下面,不知道这样对不对。求教!!!!!!

解决方案

根据描述像是头文件的多次引用问题,头文件加#pragma once 或者把定义的东西用ifdef endif 包起来

解决方案二:
线程函数可以是类的成员函数,做成友元的就可以了

解决方案三:
自己已经找到问题,谢谢楼上两位!

时间: 2024-08-22 15:26:54

线程-mfc中定义大量宏的问题的相关文章

makefile-Makefile中定义的宏在java中怎么调用?

问题描述 Makefile中定义的宏在java中怎么调用? Makefile中定义的宏有两个值,要求在java中根据这两个值写不同的代码,要怎么将其加入判断? 解决方案 JAVA中定义宏

关于线程的中处理集合一些问题. 100分赏金来了

问题描述 整个生产数据的和处理数据的过程都需要快速.希望大侠们帮忙看看,帮小弟指出有什么需要优化的地方和容易出问题的地方//线程1---生产数据publicclassDataForWlanextendsThread{privateCardReaderForWlanrr;publicstaticSet<String>carIdAndTimeSet=Collections.synchronizedSet(newHashSet<String>());publicSet<String

VC++.NET中定义和使用MFC DLL(一)

什么是DLL? DLL指的是动态链接库(Dynamic Link Library),它是一个可以被多个应用程序(甚至是不同语言编写的应用程序)同时调用的可执行二进制文件,是一个可共享的库.DLL是建立在客户/服务器通信的概念上,包含若干函数.类或资源的库文件,函数和数据被存储在一个DLL(服务器)上并由一个或多个客户导出而使用,这些客户可以是应用程序或者是其它的DLL. 在下面我们将通过一个具体的例子来说明如何利用VC.Net定义一个DLL文件,并且在VC.Net的应用程序中调用,这个例子的主要

MFC中常用类、宏、函数的简单介绍

闲来无事,整理了一下MFC中常用的类.宏.函数. 常用类 CRect:用来表示矩形的类,拥有四个成员变量:top left bottom right.分别表是左上角和右下角的坐标.可以通过以下的方法构造: CRect( int l, int t, int r, int b ); 指明四个坐标 CRect( const RECT& srcRect ); 由RECT结构构造 CRect( LPCRECT lpSrcRect ); 由RECT结构构造 CRect( POINT point, SIZE

重写-MFC中关于gdi+为啥要自定义类,如何定义

问题描述 MFC中关于gdi+为啥要自定义类,如何定义 我现在在项目组,经理让我简单的写相关程序,但是我的mfc还不太会,他给的任务是让我重写一个rect类,因为虽然GDI+中有提供现成的,但是为了以后代码的可移植性能,所以不让GDI+中提供的,那我该如何重写rect类 我不太明白他的意思啊.我去.就是简单的写一个功能和gdi+中rect功能一样的rect么 解决方案 如果是重写,那么就是实现rect所提供的各个接口函数功能.函数原型,实现都一样. 解决方案二: struct myrect {

mfc中如何定义一个checkbox,选择后跳出浏览器

问题描述 mfc中如何定义一个checkbox,选择后跳出浏览器 如图,我想在最下面增加一个选择框,勾选后点下一步,进入安装的同时打开浏览器,指向百度. 这部分代码怎么写啊? 解决方案 直接ShellExecute用open方式打开百度的URL 解决方案二: 这个安装程序你是自己做的吗?

mfc-visual c++中,MFC的消息映射宏背后的实现原理搞不明白?有谁能解释一下宏的知识。

问题描述 visual c++中,MFC的消息映射宏背后的实现原理搞不明白?有谁能解释一下宏的知识. BEGIN_MESSAGE_MAP() ...... ON_COMMAND() ........ END_MESSAGE_MAP() 这背后怎么执行,生成的,完全不知所云,只是想了解一下的原理,这样用是会用,但是不明不白 的,心里有些疑惑. 解决方案 MFC消息映射BEGIN_MESSAGE_MAP详解 解决方案二: MFC消息映射BEGIN_MESSAGE_MAP详解,我就是看的这个,http

详解C语言中的#define宏定义命令用法_C 语言

#define命令#define定义了一个标识符及一个串.在源程序中每次遇到该标识符时,均以定义的串代换它.ANSI标准将标识符定义为宏名,将替换过程称为宏替换.命令的一般形式为: #define identifier string 注意: 1.该语句没有分号.在标识符和串之间可以有任意个空格,串一旦开始,仅由一新行结束. 2.宏名定义后,即可成为其它宏名定义中的一部分. 3.宏替换仅仅是以文本串代替宏标识符,前提是宏标识符必须独立的识别出来,否则不进行替换.例如: #define XYZ th

mfc 消息响应-CEdit控件Focus时的Pretranslatemessage消息为什么只能在窗口中定义才有效

问题描述 CEdit控件Focus时的Pretranslatemessage消息为什么只能在窗口中定义才有效 大家好,请问我在一个对话框中创建了一个listctrl控件,然后在listctrl中创建了一个edit子控件,现在想要在listctrl的Pretranslatemessage()中添加对edit控件中的键盘方向键响应,但是相应代码只能添加在dialog中才有效,而定义在Listctrl控件中却无法得到响应,请问这是为什么?谢谢大家了~~ Ps:上述情况指的是在Edit控件Focus的状