0

I´m trying to implement a C-library (libcss) in Objective C. I get an "too many arguments to function call, expected 4, have 13" on function css_stylesheet_create()

    code = css_stylesheet_create(CSS_LEVEL_DEFAULT, "UTF-8", "", NULL,
                             false, false, myrealloc, 0, resolve_url, 0, NULL, NULL,
                             &sheet);

css_stylesheet_create definition:

   /** 
    *  Parameter block for css_stylesheet_create() 
    */ 

    typedef struct css_stylesheet_params {
            /** ABI version of this structure */
            uint32_t params_version;


            /** The language level of the stylesheet */
            css_language_level level;
            /** The charset of the stylesheet data, or NULL to detect */
            const char *charset;
            /** URL of stylesheet */
            const char *url;
            /** Title of stylesheet */
            const char *title;

            /** Permit quirky parsing of stylesheet */
            bool allow_quirks;
            /** This stylesheet is an inline style */
            bool inline_style;

            /** URL resolution function */
            css_url_resolution_fn resolve;
            /** Client private data for resolve */
            void *resolve_pw;

            /** Import notification function */
            css_import_notification_fn import;
            /** Client private data for import */
            void *import_pw;

            /** Colour resolution function */
            css_color_resolution_fn color;
            /** Client private data for color */
            void *color_pw;

            /** Font resolution function */
            css_font_resolution_fn font;
            /** Client private data for font */
            void *font_pw;
   } css_stylesheet_params;

css_error css_stylesheet_create(const css_stylesheet_params *params,
        css_allocator_fn alloc, void *alloc_pw,
        css_stylesheet **stylesheet);
4

2 に答える 2

3

プロトタイプは 4 つのパラメーターを要求し、呼び出しには 13 個のパラメーターがあります。

この パッチをチェックしてください。css_stylesheet_create彼らは機能を完全に変えています。つまり、すべてのパラメーターを内部に埋め込んでいるため、パラメーターの数が13 から 4css_stylesheet_paramsに減少しています。css_stylesheet_create

したがって、このように呼び出す必要があります-

css_stylesheet_params params;

params.level = CSS_LEVEL_DEFAULT;
params.charset = "UTF-8";
params.url = "";
params.title = NULL;
params.allow_quirks = false;
params.inline_style = false;
params.resolve = resolve_url;
params.resolve_pw = NULL;
params.import = NULL;
params.import_pw = NULL;
params.color = NULL;
params.color_pw = NULL;

css_stylesheet_create(&params, myrealloc, NULL, &sheet)
于 2012-04-12T13:31:37.247 に答える
1

はい、確認してください。関数宣言で 4 つのパラメーターしか指定していませんが、4 つ以上の引数で関数を呼び出しています。

 css_error css_stylesheet_create(const css_stylesheet_params *params,  
       css_allocator_fn alloc, void *alloc_pw,
         css_stylesheet **stylesheet);
于 2012-04-12T13:33:23.070 に答える