<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=ObjectProgrammingInC</id>
	<title>ObjectProgrammingInC - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=ObjectProgrammingInC"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=ObjectProgrammingInC&amp;action=history"/>
	<updated>2026-05-16T00:55:54Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=ObjectProgrammingInC&amp;diff=36843&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=ObjectProgrammingInC&amp;diff=36843&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:53Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Object Programming In C =&lt;br /&gt;
&lt;br /&gt;
= sample code =&lt;br /&gt;
 #include &amp;amp;lt;stdio.h&amp;amp;gt;&lt;br /&gt;
 struct testClass &lt;br /&gt;
 {  &lt;br /&gt;
     int attrib; &lt;br /&gt;
     void (*method1)(int);   &lt;br /&gt;
 };&lt;br /&gt;
   &lt;br /&gt;
 void Operator1(int x) {&lt;br /&gt;
 	printf(&amp;quot;%d\n&amp;quot;, x);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int main()  &lt;br /&gt;
 {  &lt;br /&gt;
     testClass instanceClass;  &lt;br /&gt;
     instanceClass.method1= &amp;amp;amp;Operator1; &lt;br /&gt;
     instanceClass.method1(3);  // or Operator1(3);  &lt;br /&gt;
 	return 0;&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
= thread =&lt;br /&gt;
결국 포인터.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
typedef struct  &lt;br /&gt;
{  &lt;br /&gt;
    int attrib; &lt;br /&gt;
    void (*method1)(int);   &lt;br /&gt;
}testClass; --[[이영호]]&lt;br /&gt;
----&lt;br /&gt;
여기서 Question. 만일 attrib 를 찍고 싶다면? --&amp;amp;#91;1002&amp;amp;#93;&lt;br /&gt;
----&lt;br /&gt;
결국 private가 없단 소린데... 컴파일 까지만 해서 lib 형태로 header에 public화 할 것만 공개한다면... 불가능이군...&lt;br /&gt;
차라리 저 구조체만 다른 lib에 저장시키고 링크를 불가능하게 내부에서만 연산을 한다면 몰라도. return value는 kernel이나 IPC로 넘겨 줘야할 듯.&lt;br /&gt;
이렇게 된다면 class에서 private를 쓰는 목적을 달성은 하지만 효용성은 거의 제로겠고...&lt;br /&gt;
attrib을 찍는다는 문제를 주셨는데... attrib가 private라 가정하고, 따라서 method1의 함수가 구조체(클래스)의 attrib을 고친다는 뜻으로 판단하고 생각해본다면... C++의 this란 예약어가 없다면 C언어에서 C++과 같은 class의 표현은 어려울 듯. 메모리주소로 가능을 할 수도 있으나, 코드 조작을 어셈블리 차원으로 내려가 하나하나 손봐야함... (이 답이 아니라면 낭패)&lt;br /&gt;
--[[이영호]]&lt;br /&gt;
함수인자로 명시적으로  포인터를 넘겨주던지 해야겠네 ㅡ.ㅡ;; 결국 뻘짓이구만 ㅋㅋㅋ - &amp;amp;#91;eternalbleu&amp;amp;#93; &lt;br /&gt;
&lt;br /&gt;
별 다른 뜻은 아니고, C++ 컴파일러의 경우 메소드인 경우 인자로서 this 를 자동으로 넘겨준다고 해서. 그리고, attrib 이 private 이 아닌 public 이라 하더라도, 똑같은 질문이 가능할듯. --&amp;amp;#91;1002&amp;amp;#93;&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>