gpt4 book ai didi

c++ - 成员函数的 pragma GCC 毒语法

转载 作者:搜寻专家 更新时间:2023-10-31 02:02:14 26 4
gpt4 key购买 nike

在 GCC(和 clang)中有这个选项可以毒化一个函数:

#include <stdio.h>
#pragma GCC poison puts

int main() {
puts("a");
}

毒化模板类的成员函数的语法是什么?

我尝试了以下选项,但我什至没能让它适用于非模板类成员。

#include <stdio.h>
#pragma GCC poison puts

struct A{
bool operator==(A const& o){return true;}
};

#pragma GCC poison A::operator== //not working

template<class T>
struct B{
bool operator==(B const& o){return true;}
};

#pragma GCC poison template<class T> B<T>::operator== //not working either


int main() {
puts("a");
}

https://godbolt.org/z/rBEgjZ

最佳答案

我不认为有这样的语法。 documentation#pragma GCC poison 是预处理器本身的一部分;事实上,GCC 文档甚至没有提到它。

这意味着它只适用于预处理器理解的东西,即标识符标记。 A::operator== 是四个独立的标记:A::operator==。其中,您只能毒害 Aoperator;预处理器不理解作用域或类,更不用说模板了。

关于c++ - 成员函数的 pragma GCC 毒语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57643116/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com