「プライベート」はCのキーワードですか?

private C89 または C99 キーワードではありません。 Wikibooks* の C プログラミング/リファレンス テーブルを参照してください。

また、C は Java や C# とは何の関係もありません** (実際には、C++ とも関係ありません)。ただし、その逆は正しくありません。たとえば、C++ は C から派生しました。

* より良いリファレンスが必要です!
** 実際、C89 は const を「借用」しました と volatile C++ からのキーワード。同様に、C99 は inline を「借用」しました。 キーワード、および _Bool も追加 および _Complex (C++ の bool のように そしてcomplex 、それぞれ) [要出典] .


どちらも C キーワードではありませんが、次のことを行う人もいます:

#define public 
#define private static

更新:

上記のことをするのは悪い考えだと思う人のために、私は同意します.しかし、なぜ誰かが public と考えるのかは説明できます または private は C キーワードです。

C でコンパイルできないと思う人は、これを試してください:

#include <stdio.h>
#include <stdlib.h>

#define public
#define private static

private void sayHello(void);

public int main(void) {
    sayHello();

    return (EXIT_SUCCESS);
}

private void sayHello(void) {
   printf("Hello, world\n");
}

C++ ではコンパイルできないと思う人のために、はい、上記のプログラムはコンパイルします。

更新:

実際には、C++ 標準のこの部分により未定義の動作になります:

したがって、上と下の例は、C++ で適切なことを行う必要はありません。これは良いことです。私の答えは、まだ C に対して完全に有効です (それが間違っていることが証明されるまで! :-) ).

プライベート メンバーを持つ C++ クラスの場合、次のように同様のことを行うことができます (悪用と見なされます):

ma​​in.c :

#include <cstdlib>
#define private public
#include "message.hpp"

int main() {
    Message msg;

    msg.available_method();
    msg.hidden_method();

    return (EXIT_SUCCESS);
}

message.hpp :

#ifndef MESSAGE_H
#define MESSAGE_H

#include <iostream>

class Message {
  private: 
      void hidden_method();

  public: 
      void available_method();
};

inline void Message::hidden_method() {
    std::cout << "this is a private method" << std::endl;
}

inline void Message::available_method() {
    std::cout << "this is a public method" << std::endl;
}

#endif