社区
C++ 语言
帖子详情
关于宏定义的一个问题
mountlin
2005-01-23 02:33:05
#define M(x) x::f()
如果我这样用M(C<T1,T2>),编译不通过,告诉我M接受的参数多了,C<T1,T2>被当成了两个参数。而如果用M((C<T1,T2>)),编译又会告诉我C<T1,T2>是抽象类,不能实例化。C<T1,T2>的确是抽象类,但我是在C<T1,T2>的派生类中用的M宏,如果直接写C<T1,T2>::f()是没问题的,是因为(<T1,T2>):f()多了()造成了别的含义?
不知道有没有说清。请问各位大虾,这个问题该怎样解决?
...全文
212
7
打赏
收藏
关于宏定义的一个问题
#define M(x) x::f() 如果我这样用M(C),编译不通过,告诉我M接受的参数多了,C被当成了两个参数。而如果用M((C)),编译又会告诉我C是抽象类,不能实例化。C的确是抽象类,但我是在C的派生类中用的M宏,如果直接写C::f()是没问题的,是因为():f()多了()造成了别的含义? 不知道有没有说清。请问各位大虾,这个问题该怎样解决?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sunwt
2005-01-23
打赏
举报
回复
typedef即可
playmud
2005-01-23
打赏
举报
回复
#include <iostream>
#define M( x ) x::f()
using namespace std;
template<typename T,typename T2>
class B1
{
public:
int m_dwRef;
int f(){cout<<"hello world"<<endl;};
};
int main()
{
B1<int,char> a;
typedef B1<int,char > ss;
M( a.ss );
system("pause");
}
搞定了,呵呵。
playmud
2005-01-23
打赏
举报
回复
偶理解错了。
playmud
2005-01-23
打赏
举报
回复
#include <iostream>
#define M(x) x::f()
using namespace std;
template<typename T>
class B1
{
public:
int m_dwRef;
int f(){cout<<"hello world"<<endl;};
};
int main()
{
B1<int> a;
M(a.B1<int>);
system("pause");
}
看来不应该不是写法的问题。
useresu
2005-01-23
打赏
举报
回复
想了一下,感觉是宏定义不支持这样定义吧,
直接写C<T1,T2>::f()当然是没问题的。
useresu
2005-01-23
打赏
举报
回复
不太明白,为了类型的安全性,宏这东西能少用,就少用,难道模板解决不了问题吗?
idler
2005-01-23
打赏
举报
回复
mark&up
keil出现同
一个
宏定义
赋值在多个文件中结果不一致
问题
本文探讨了在仿真环境中,
一个
变量在初始化和运行时使用
宏定义
赋值出现不同结果的情况。
问题
源于
宏定义
中嵌套的判断性
宏定义
在预编译时可能未被正确处理。通过查看编译过程文件,发现在生成时某些
宏定义
并未完全定义。解决方案包括调整
宏定义
的位置和优化编译流程。此
问题
揭示了理解编译过程和
宏定义
处理的重要性。
一个
宏定义
的
问题
本文探讨了C语言中
宏定义
的使用技巧及其注意事项,特别是关于
宏定义
结尾是否加分号的
问题
,解释了不当的分号使用如何导致编译错误,并通过示例代码展示了正确的
宏定义
方法。
一个
宏定义
引发的
问题
本文深入探讨了C语言中buffer
宏定义
的实现原理及其在内存地址操作中的应用,解释了其内部工作原理,并对比了不同操作的正确性和可行性。
一个
关于
宏定义
的
问题
,我和ChatGPT、NewBing、Google Bard、文心一言 居然全军覆没?
文章讨论了
一个
关于
宏定义
的编程
问题
,指出AI模型如ChatGPT、NewBing、GoogleBard和文心一言在解答时出现错误。这强调了AI的局限性及信息验证的重要性。同时,文章比较了GPT-3.5和GPT-4.0的性能提升,特别是GPT-4在参数规模、树型推理和复杂任务处理上的进步。
如何找linux宏的头文件,
一个
PTHREAD_STACK_MIN
宏定义
引出的头文件包含
问题
文章探讨了在Linux环境下,如何找到PTHREAD_STACK_MIN宏的定义,尤其是在遇到不同平台和编译器时可能出现的
问题
。在博通MIPS平台上,由于额外的
宏定义
和头文件包含路径
问题
,导致出现了错误。通过分析头文件搜索路径和#include_next的用法,揭示了如何正确查找和理解PTHREAD_STACK_MIN的来源。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章