On Thu 29 Sep 2011 11:10:00 PM IST, Michael Mol wrote:
> On Thu, Sep 29, 2011 at 1:27 PM, Nilesh Govindarajan
> <cont...@nileshgr.com> wrote:
>> Default function arguments in C are specified like this:
>>
>> int func(int a = 10) {} // just a dummy function
>>
>> Now I save that in a file called foo.c
>>
>> The above piece of code is valid in C as well as C++
>>
>> Now see this:
>>
>> nilesh@Linux ~ $ cat /tmp/foo.c
>> int func(int a = 1) {}
>> nilesh@Linux ~ $ gcc /tmp/foo.c
>> /tmp/foo.c:1:16: error: expected ‘;’, ‘,’ or ‘)’ before ‘=’ token
>> nilesh@Linux ~ $ g++ /tmp/foo.c
>> /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/../../../../lib64/crt1.o: In
>> function `_start':
>> (.text+0x20): undefined reference to `main'
>> collect2: ld returned 1 exit status
>> nilesh@Linux ~ $ gcc -v
>> Using built-in specs.
>> COLLECT_GCC=/usr/x86_64-pc-linux-gnu/gcc-bin/4.5.3/gcc
>> COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/4.5.3/lto-wrapper
>> Target: x86_64-pc-linux-gnu
>> Configured with:
>> /media/500GB/gentoo_portage/tmp/portage/sys-devel/gcc-4.5.3-r1/work/gcc-4.5.3/configure
>> --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.5.3
>> --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include
>> --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.5.3
>> --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.5.3/man
>> --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.5.3/info
>> --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/g++-v4
>> --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec
>> --disable-fixed-point --without-ppl --without-cloog --disable-lto
>> --enable-nls --without-included-gettext --with-system-zlib
>> --disable-werror --enable-secureplt --enable-multilib
>> --enable-libmudflap --disable-libssp --enable-libgomp --enable-cld
>> --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/4.5.3/python
>> --enable-checking=release --disable-libgcj
>> --enable-languages=c,c++,fortran --enable-shared --enable-threads=posix
>> --enable-__cxa_atexit --enable-clocale=gnu
>> --with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.5.3-r1
>> p1.0, pie-0.4.5'
>> Thread model: posix
>> gcc version 4.5.3 (Gentoo 4.5.3-r1 p1.0, pie-0.4.5)
>> nilesh@Linux ~ $ g++ -v
>> Using built-in specs.
>> COLLECT_GCC=/usr/x86_64-pc-linux-gnu/gcc-bin/4.5.3/g++
>> COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/4.5.3/lto-wrapper
>> Target: x86_64-pc-linux-gnu
>> Configured with:
>> /media/500GB/gentoo_portage/tmp/portage/sys-devel/gcc-4.5.3-r1/work/gcc-4.5.3/configure
>> --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.5.3
>> --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include
>> --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.5.3
>> --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.5.3/man
>> --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.5.3/info
>> --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/g++-v4
>> --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec
>> --disable-fixed-point --without-ppl --without-cloog --disable-lto
>> --enable-nls --without-included-gettext --with-system-zlib
>> --disable-werror --enable-secureplt --enable-multilib
>> --enable-libmudflap --disable-libssp --enable-libgomp --enable-cld
>> --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/4.5.3/python
>> --enable-checking=release --disable-libgcj
>> --enable-languages=c,c++,fortran --enable-shared --enable-threads=posix
>> --enable-__cxa_atexit --enable-clocale=gnu
>> --with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.5.3-r1
>> p1.0, pie-0.4.5'
>> Thread model: posix
>> gcc version 4.5.3 (Gentoo 4.5.3-r1 p1.0, pie-0.4.5)
>>
>> Why is this happening? O_o
>
> First guess, you need an int main() function, or you need to tell gcc
> not to look for one.
>
>

Syntax error doesn't depend on existence of main. I just posted this as 
a snippet, I'd been working on one of my practical  programs and 
spotted this problem with a function I'd just made. And yeah, my 
program had main().

-- 
Nilesh Govindarajan
http://nileshgr.com

Reply via email to