c++ - 如何在clang中为一行禁用-Wvexing-parse?
问题描述
Clang-Wvexing-parse
默认启用,这是一件好事。
但是,有时我想在另一个函数 () 的范围内声明一个函数 ( ) ,因为这是唯一需要注意的函数。f()
g()
g()
f()
有没有办法通过对特定行的评论告诉 clang “我的意思是声明一个函数”?
例子:
#include <iostream>
// header file
int g()
{
const char *f(); //HOW TO clang-disable-vexing-parse?
std::cout << f() << std::endl;
}
// cpp file
const char *f()
{
return "";
}
// main.cpp
int main()
{
g();
}
(在线示例)。
解决方案
类似的东西
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wvexing-parse"
const char *f();
#pragma clang diagnostic pop
std::cout << f() << std::endl;
应该做你想做的。
但是,如果您将函数f()
正确声明为不带参数的函数(因此f(void)
)并且应该实现相同的功能,则实际上没有必要禁用警告。
#include <iostream>
// header file
int g(void)
{
const char *f(void); //HOW TO clang-disable-vexing-parse?
std::cout << f() << std::endl;
}
// cpp file
const char *f(void)
{
return "";
}
// main.cpp
int main()
{
g();
}
推荐阅读
- http - Flutter:InternalError,过滤器错误,在服务器上上传图像时数据错误
- javascript - 如何在 React-Native 中创建 Intent 并将数据传递给它?
- django - 测试图像上传总是失败
- python - 将 DataFrame 与“不均匀”数据合并
- google-cloud-firestore - .json 文件中的 Cloud Firestore 敏感信息
- reactjs - 导出材质ui主题包
- reactjs - 用异步反应意外的令牌
- c# - C# WPF 应用程序中的 Keycloak:如何在普通 MVVM WPF 应用程序中访问 C# 中给定用户/密码的角色?
- javascript - 如何在考虑负值的情况下将 javascript BigInt 转换为 Uint8Array
- angular - Angular-cli 组件生成器在 Nativesctipt 中不起作用