小编Jad*_*rma的帖子

C - 将多个函数地址作为参数传递到可变参数函数中

我正在尝试编写一个函数,该函数将采用前 n 个整数和可变数量的函数,并构建一个表,该表的第一列中的数字为“i”,其他列中的数字为“function(i)”。

但我似乎无法将函数的地址传递给表生成器,因为我收到访问冲突错误。我做错了什么?

#include <stdio.h>
#include <math.h>
#include <stdarg.h>

typedef float(*f)(float);

// Some examples of f-type functions.
float square(float x) { return x*x; };
float root(float x) { return sqrt(x); };
float timesPi(float x) { return x * 3.14; };

// Display a table with first colon being the numbers from 1 to n, 
// then the other columns to be f(i)
void table(unsigned int n, unsigned int nr_functions, ...)
{
    va_list func;
    va_start(func, nr_functions);

    for (float i = …
Run Code Online (Sandbox Code Playgroud)

c function-pointers variadic-functions memory-address

5
推荐指数
1
解决办法
1009
查看次数

如何从layout.xml 中获取当前应用程序主题的颜色?

我制作了一个仅使用一个主题的应用程序,但现在我希望用户能够在运行时更改它。由于某些布局元素需要使用特定颜色进行着色,因此我所有的 layout.xml-s 都具有类似的属性android:background="@color/colorBackground"

目前,我在colors.xml. 它看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#607D8B</color>
    <color name="colorPrimaryDark">#455A64</color>
    <color name="colorAccent">#FF9800</color>
    <color name="colorBackground">#FAFAFA</color>
    <color name="colorTextSubtitle">#F0F0F0</color>
    <color name="colorTextSubtitleBackground">#AA000000</color>
</resources>
Run Code Online (Sandbox Code Playgroud)

但是,这样我只能有一个主题。我正在考虑做一些事情,比如让颜色成为主题样式的一部分(所有主题将具有相同的颜色项,但具有不同的值)。

我怎样才能让我的布局文件检测应用程序的当前主题并从那里获取颜色名称?就像android:background="[currentTheme.colorBackground]"这样,我可以拥有多种风格,然后在它们之间进行更改。

我想过将主题放在共享首选项或类似的东西中,然后在覆盖onCreate()方法时以编程方式更改颜色,但这似乎过于复杂,我认为必须有一种更简单的方法。但是我在网上找不到任何东西。

xml android color-palette android-layout

2
推荐指数
1
解决办法
1904
查看次数