Linux 下 函數默認參數的問題


我在linux下,想寫一個有默認參數的函數,struct FilePackage pack(char *filename, int filesize, int time=0)結果出現了以下這個問題,怎么都想不明白,在windows下這個程序是對的啊,怎么linux就不行了呢,
[root@zhichaoPC server]# gcc main.c -o main
In file included from main.c:2:
main.h:9: error: expected ';', ',' or ')' before '=' token
main.c: In function 'main':
main.c:6: error: incompatible types when assigning to type 'struct FilePackage' from type 'int'

以下是簡短的程序代碼


//in main.c
#include <stdio.h>
#include "main.h"
void main()
{
        struct FilePackage data;
        data = pack("zhichao",1);
        printf("%d", data.time);
}



//in main.h
#include <string.h>
struct FilePackage
{
        char *filename;
        int filesize;
        int time;
};

struct FilePackage pack(char *filename, int filesize, int time=0)
{
        struct FilePackage tFilePackage;
        strcpy(tFilePackage.filename, filename);
        tFilePackage.filesize = filesize;
        tFilePackage.time = time;
}

7 个解决方案

#1


1. pack好像沒有返回?
2. C 好像不支持默認參數吧. 

#2


用g++試試

#3


引用 1 樓 youyou1912 的回復:
1. pack好像沒有返回?
2. C 好像不支持默認參數吧. 

謝謝 ,程序有返回值,發帖子的時候沒有注意。第二點我倒是沒有注意過。謝謝。

#4


引用 2 樓 Athenacle_ 的回復:
用g++試試

謝謝了,這幾天沒時間弄程序,回去試驗下

#5


該回復於2013-05-04 09:41:24被管理員刪除

#6


C不支持默認參數,用C++吧

#7


C不支持默認參數
使用g++編譯吧,不要用gcc

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com