Comments (8)
snprintf should be available in C89... There are no C99 features used in the implementation. What error message are you getting?
from libutp.
-ansi is not equivalent to C89 but to C90, the later doesn't define snprintf() and that causes the problem.
Ref: http://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#C-Dialect-Options
What error message are you getting?
Building Transmission (2.30 or 2.31 which are the releases using libutp) on Cygwin with the usual configure :
Making all in libutp
CXX utp.o
In file included from utp.cpp:78:
utp_config.h:8:2: warning: #warning implement this in libtransmission
utp.cpp: In member function 'const char* PackedSockAddr::fmt(char*, size_t) const':
utp.cpp:190: error: 'snprintf' was not declared in this scope
And this is not a question about how to build, or what is on is not on the standards, I already researched that, and I already build Transmission, I just wanted to report this issue.
from libutp.
Does using -std=c89 instead of -ansi solve the compilation problem?
from libutp.
Yes and no, just by not using -ansi the compilation succeeds, if you use -std=c89 or c99 the output has a warning:
cc1plus: warning: command line option "-std=c89" is valid for C/ObjC but not for C++
which of course can be ignored, just tells you should know your tools better ;-)
from libutp.
Then -ansi means more than just -std=c90, or it would print the same warning, right?
from libutp.
No.
-std=c90 ? That one doesn't exist when using g++, i.e. no warning, you get an error: unrecognized command line option "-std=c90".
The reference I gave above says "-ansi In C mode, this is equivalent to -std=c90'. In C++ mode, it is equivalent to
-std=c++98'."
So if you use -std=c++98 you get the same error ('snprintf' was not declared in this scope) as with -ansi.
from libutp.
So it looks like the only way to get snprintf is to leave off -ansi or specifically use -std=gnu++98 (which is the default). That's odd. I suppose the Microsoft dialect also added snprintf on top of c++98.
Anyway, I'll just remove the uses of -ansi, it was leftover from trying to enforce C89 with C code.
from libutp.
Just for documentation:
- no -ansi (equivalent to -std=gnu++98), builds fine.
- -std=gnu++0x, also builds fine.
- -std=c++0x, fails.
and it all comes to the strictness of the header (stdio.h), the one in Cygwin happens to be very strict, I guess just about anywhere else (I've built the same on 2 different Linux with no change required) didn't go that far.
from libutp.
Related Issues (20)
- Assertion `mtu_floor <= mtu_ceiling' failed. HOT 2
- reserved identifier violation
- Remove an unnecessary null pointer check HOT 1
- Compilation broken on Windows with `utp_shutdown` changes HOT 1
- utp_socket memory can be leaked
- ECN support
- uTP Fast Open
- How to distinguish whether other peers use utp or tcp protocol? HOT 1
- Client socket must send data first HOT 2
- Question about UTPSocket::cur_window_packets initialization. HOT 2
- How to just the package of utp ? HOT 2
- Unable to build on Haiku HOT 1
- Question: performance figures HOT 4
- Tag releases for downstream packaging
- Assertion `mtu_floor <= mtu_ceiling' failed
- how to identify utp HOT 4
- Is there any format spec for utp version 0?
- libutp in a multi-thread application
- Member access within misaligned address for type 'UTPSocketKeyData', which requires 8 byte alignment HOT 1
- fast_resend_seq_nr not initalize for utp client
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from libutp.