我想使用g ++和-Werror,所以我现在要禁用我无法控制的第三方库的警告.http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html提供的解决方案非常有效,允许简单地用pragma包装第三方标题.不幸的是,在涉及模板的某个设置中,这对我来说不再适用.我创建了以下最小的示例,其中此方法无法按预期工作:
源文件main.cpp
#pragma GCC diagnostic ignored "-Wunused-parameter"
#include "hdr.hpp"
#pragma GCC diagnostic error "-Wunused-parameter"
int main() {
return mytemplatefunc(2) + mystandardfunc(3); // will print ONLY ONE warning
}
Run Code Online (Sandbox Code Playgroud)
和标题hdr.hpp
template<typename T>
int mytemplatefunc(T t) {
return 42;
}
int mystandardfunc(int i) {
return 53;
}
Run Code Online (Sandbox Code Playgroud)
使用Makefile编译
CPPFLAGS+=-Wunused-parameter -Werror
main: main.cpp
Run Code Online (Sandbox Code Playgroud)
将产生以下编译器错误
g++ -Wunused-parameter -Werror main.cpp -o main
In file included from main.cpp:3:
hdr.hpp: In instantiation of ‘int mytemplatefunc(T) [with T = int]’:
main.cpp:29: instantiated from …Run Code Online (Sandbox Code Playgroud) 如何列出模型中定义的所有属性?
例如,如果我们有一些假想的博客应用程序的变体:
App.Post = DS.Model.extend({
title: DS.attr('string'),
text: DS.attr('string'),
comments: DS.hasMany('App.Comment')
});
Run Code Online (Sandbox Code Playgroud)
然后,我正在寻找在没有App.Post模型实例的情况下迭代属性的可能性:
# imaginary function
listAttributes(App.Post)
Run Code Online (Sandbox Code Playgroud)
这样的函数可以生成一个提供模型属性名称和类型的数组:
[{
attribute: "title",
type: "string"
},
{
attribute: "text",
type: "string"
}]
Run Code Online (Sandbox Code Playgroud)
如何用Ember实现这一目标?