
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
extern を付けると強制的に「外部リンケージを指定する」のに対し, extern を付けない場合にはそのような効果はない (翻訳単位全体を見たあとで「ああ, 外部リンケージが必要なんだな」と判断されるケースはある).
なので,
同名で「外部リンケージを持たない」ことを指定する宣言が他に存在する
場合には
・extern が付いていると不正なプログラム
・extern が付いていないと不正でないプログラム
と違いを生じることになる.
No.3
- 回答日時:
extern は、
定義ではなく宣言であると明示するキーワードなので、
関数プロトタイプ宣言は元から宣言であり、付けても意味は変わりません。
変数定義に付けて宣言に変えるのが主な使い方です。
extern "C" は、
宣言に加えて呼び出し規則も明示するため、
C言語とは異なる呼び出し規則の言語から呼び出すときに違いが出ます。
No.1
- 回答日時:
#include "hoge.h"
全ファイルから参照される場合は、hoge.hで宣言すれば
変わらないかと考えます。
関数・変数の実態はここにはなく外部参照ですと宣言してるだけ
実際は
グローバール関数・変数では、extern 宣言無でも関数は共有されます。
コード上は、どこかで関数本体を定義すればいいだけです。
古典的なCでは、関数を定義前に使った場合戻り値int ,引数voidとして
処理さえ、後で実体が定義されて引数と戻り値が違ってもエラーでません。
多くのバグの元ですが・・
いまのCは、プロトタイプ宣言無でも問題なく変な引数の場合はエラーでます。
C++の場合はエラーになります。
int hoge(void);
init hoge(int);
の関数が存在できるから
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プログラマー達は何故、プログラムを入れるフォルダーに容量制限があるのを知らない?
C言語・C++・C#
-
Cのプログラムからアクセスできないファイル名の一括変更方法
C言語・C++・C#
-
C言語 関数、変数の宣言について
C言語・C++・C#
-
-
4
visual studio 2022でのC#プログラミングのテンプレートについて
C言語・C++・C#
-
5
あってる
C言語・C++・C#
-
6
C言語のことです。写真(見にくくてすいません)の下のプログラムを実行したいのですが四行目がおかしいと
C言語・C++・C#
-
7
プログラミングc++を全く分からない状態から習得するまでどれくらいかかりますか?なぜ難しいと言われて
C言語・C++・C#
-
8
C# で 数式文字列処理を処理する方法
C言語・C++・C#
-
9
プログラミングに興味があるのですが、作りたいものはありません。 ゲーム機とかパソコンの中身(ソースコ
その他(プログラミング・Web制作)
-
10
JIT適用PHP8はJavaサーブレットより処理速度は早く、現在の全Webアプリ内で最速でしょうか?
C言語・C++・C#
-
11
c++の勉強方法を教えてくださいプログラミングをやった事がなく1から勉強を始めようと思います1日1時
C言語・C++・C#
-
12
C言語について(初心者)
C言語・C++・C#
-
13
COPYコマンドで、最後に1文字「Hex1A」が付くのはなぜ?外し方は?
その他(プログラミング・Web制作)
-
14
pythonについて(初心者です)
その他(プログラミング・Web制作)
-
15
プログラミング言語でアプリやゲームweb制作をしようと思っております。色んなプログラミング言語がある
C言語・C++・C#
-
16
DNCL(共テ用プログラミング言語)について 写真の(12)のプログラムにおいて、解説によると(12
C言語・C++・C#
-
17
AIがプログラムする時代のプログラマー不要論の相違について
その他(プログラミング・Web制作)
-
18
数学、プログラミング、物理、化学など理系の方に質問 プログラミング言語、数式、化学式などで会話をしよ
その他(プログラミング・Web制作)
-
19
アセンブラーの命令についてです。
その他(プログラミング・Web制作)
-
20
pythonについて
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C言語】全角文字の配列を、全...
-
DLLファイルの逆コンパイラにつ...
-
C言語の関数のextern宣言
-
int16_t の _t は何?
-
C言語関数違いについて。
-
gccを行ってもexeファイルが生...
-
c言語
-
C#でTreeViewのCheckBoxのサイ...
-
ArduinoのジャイロモジュールMP...
-
VisualStudio2022でC言語プログ...
-
大量のデータを読み込んで表示...
-
プログラマー達は何故、プログ...
-
c++の勉強方法を教えてくださ...
-
パソコン
-
あんまり考えたくないけど
-
C++でデスクトップGUIアプリ開...
-
C言語について。
-
VisualStudioでC++クラスを追加...
-
C言語でファクト関数を使わずに...
-
Windows Formアプリからコンソ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DLLファイルの逆コンパイラにつ...
-
大量のデータを読み込んで表示...
-
c言語
-
gccを行ってもexeファイルが生...
-
visual studio 2022でのC#プロ...
-
【C言語】全角文字の配列を、全...
-
Windows Formアプリからコンソ...
-
VisualStudioでC++クラスを追加...
-
VisualStudio2022でC言語プログ...
-
プログラマー達は何故、プログ...
-
C++でデスクトップGUIアプリ開...
-
逆コンパイルと逆アセンブルの...
-
C言語について。
-
C#でTreeViewのCheckBoxのサイ...
-
C言語の関数のextern宣言
-
int16_t の _t は何?
-
C#でログファイルにファイルパ...
-
ディスプレイの解像度とマウス...
-
c言語でイベントフラグを使った...
-
C言語のことです。写真(見にく...
おすすめ情報