Gcc: Difference between revisions

From 탱이의 잡동사니
Jump to navigation Jump to search
(Created page with "== Overview == GNU c/c++ 컴파일러 gcc 내용 정리 == Options == category:programming")
 
No edit summary
Line 1: Line 1:
== Overview ==
== Overview ==
GNU c/c++ 컴파일러 gcc 내용 정리
GNU c/c++ 컴파일러 gcc 내용 정리
== Function parameter evaluation order ==
gcc 뿐만이 아니라, 모든 c 에 해당되는 내용이다. Function parameter 로 전달되는 parameter 들의 evaluation 에는 순서가 없다. 즉, 어떤 순위로 식이 평가되는지 알 수 없다는 것이다<ref>http://stackoverflow.com/a/621548/713079</ref>.
<pre>
It depends on the argument type, the called function's calling convention, the archtecture and the compiler
</pre>
재밌는 테스트 결과가 있었다.
<pre>
int i=1;
printf("%d %d %d\n", i++, i++, i);
results in
2 1 3 - using g++ 4.2.1 on Linux.i686
1 2 3 - using SunStudio C++ 5.9 on Linux.i686
2 1 3 - using g++ 4.2.1 on SunOS.x86pc
1 2 3 - using SunStudio C++ 5.9 on SunOS.x86pc
1 2 3 - using g++ 4.2.1 on SunOS.sun4u
1 2 3 - using SunStudio C++ 5.9 on SunOS.sun4u
</pre>


== Options ==
== Options ==
== See also ==
* http://stackoverflow.com/questions/367633/what-are-all-the-common-undefined-behaviours-that-a-c-programmer-should-know-a - Stack overflow
== Reference ==
<references />


[[category:programming]]
[[category:programming]]

Revision as of 08:47, 13 July 2016

Overview

GNU c/c++ 컴파일러 gcc 내용 정리

Function parameter evaluation order

gcc 뿐만이 아니라, 모든 c 에 해당되는 내용이다. Function parameter 로 전달되는 parameter 들의 evaluation 에는 순서가 없다. 즉, 어떤 순위로 식이 평가되는지 알 수 없다는 것이다<ref>http://stackoverflow.com/a/621548/713079</ref>.

It depends on the argument type, the called function's calling convention, the archtecture and the compiler

재밌는 테스트 결과가 있었다.

int i=1;
printf("%d %d %d\n", i++, i++, i);

results in

2 1 3 - using g++ 4.2.1 on Linux.i686
1 2 3 - using SunStudio C++ 5.9 on Linux.i686
2 1 3 - using g++ 4.2.1 on SunOS.x86pc
1 2 3 - using SunStudio C++ 5.9 on SunOS.x86pc
1 2 3 - using g++ 4.2.1 on SunOS.sun4u
1 2 3 - using SunStudio C++ 5.9 on SunOS.sun4u


Options

See also

Reference

<references />