
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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# C言語 列挙型(enum型)変数について 7 2024/01/15 14:20
- JavaScript 条件に該当した時のみ定数を宣言する事はできますか 8 2023/03/15 05:55
- Excel(エクセル) 表中の指定した条件の文字列を結合する方法について 4 2024/08/01 14:32
- その他(プログラミング・Web制作) 特定の項目セルにスキャン(入力)すると連続で5行に自動で日付がはいる 1 2024/07/31 14:20
- 哲学 フォルダによる本質証明と述語証明 2 2023/10/10 00:53
- その他(プログラミング・Web制作) 関数定義について質問です 架空のプログラミング言語ですが、こういう関数があった時、何を返してくれそう 4 2024/01/03 17:27
- その他(Microsoft Office) 【スプレドシート】IMPORTRANGE関数とSUMIFSの組み合わせ 1 2023/03/05 18:17
- その他(悩み相談・人生相談) 売り言葉に買い言葉で、数年後に出ていく!と宣言した場合、本気じゃなければ撤回しますか? 謝りもせず、 3 2024/12/16 09:46
- Excel(エクセル) Googleスプレッドシートどの関数を使えば? 1 2024/08/12 17:15
このQ&Aを見た人はこんなQ&Aも見ています
-
プログラマー達は何故、プログラムを入れるフォルダーに容量制限があるのを知らない?
C言語・C++・C#
-
Cのプログラムからアクセスできないファイル名の一括変更方法
C言語・C++・C#
-
C言語 関数、変数の宣言について
C言語・C++・C#
-
-
4
あってる
C言語・C++・C#
-
5
visual studio 2022でのC#プログラミングのテンプレートについて
C言語・C++・C#
-
6
c++の勉強方法を教えてくださいプログラミングをやった事がなく1から勉強を始めようと思います1日1時
C言語・C++・C#
-
7
C言語のことです。写真(見にくくてすいません)の下のプログラムを実行したいのですが四行目がおかしいと
C言語・C++・C#
-
8
プログラミングc++を全く分からない状態から習得するまでどれくらいかかりますか?なぜ難しいと言われて
C言語・C++・C#
-
9
C# で 数式文字列処理を処理する方法
C言語・C++・C#
-
10
JIT適用PHP8はJavaサーブレットより処理速度は早く、現在の全Webアプリ内で最速でしょうか?
C言語・C++・C#
-
11
プログラミングに興味があるのですが、作りたいものはありません。 ゲーム機とかパソコンの中身(ソースコ
その他(プログラミング・Web制作)
-
12
C言語について(初心者)
C言語・C++・C#
-
13
プログラミング言語でアプリやゲームweb制作をしようと思っております。色んなプログラミング言語がある
C言語・C++・C#
-
14
COPYコマンドで、最後に1文字「Hex1A」が付くのはなぜ?外し方は?
その他(プログラミング・Web制作)
-
15
pythonについて(初心者です)
その他(プログラミング・Web制作)
-
16
DNCL(共テ用プログラミング言語)について 写真の(12)のプログラムにおいて、解説によると(12
C言語・C++・C#
-
17
パソコン
C言語・C++・C#
-
18
pythonについて
その他(プログラミング・Web制作)
-
19
アセンブラーの命令についてです。
その他(プログラミング・Web制作)
-
20
趣味がプログラミングだと言ってもいい?
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サブルーチンを使った再帰的な...
-
c言語
-
C#でTreeViewのCheckBoxのサイ...
-
パソコン
-
C言語について。
-
visual studio 2022でのC#プロ...
-
Python、プログラミングについ...
-
C言語 列挙型(enum型)変数について
-
ArduinoでMouse関数を使用して...
-
gccを行ってもexeファイルが生...
-
VisualStudioでC++クラスを追加...
-
C言語でファクト関数を使わずに...
-
【C言語】全角文字の配列を、全...
-
DNCL(共テ用プログラミング言語...
-
あんまり考えたくないけど
-
次の日本語の意味を教えて下さい
-
c言語
-
Notepad++の関数リスト表示でC...
-
MACで動く実行ファイルをWindow...
-
パイソンの
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
visual studio 2022でのC#プロ...
-
Windows Formアプリからコンソ...
-
大量のデータを読み込んで表示...
-
C言語の関数のextern宣言
-
C#でログファイルにファイルパ...
-
【C言語】全角文字の配列を、全...
-
略語の読み方について
-
プログラマー達は何故、プログ...
-
C#でTreeViewのCheckBoxのサイ...
-
gccを行ってもexeファイルが生...
-
c言語でイベントフラグを使った...
-
VisualStudio2022でC言語プログ...
-
Python、プログラミングについ...
-
C言語 列挙型(enum型)変数について
-
VisualStudioでC++クラスを追加...
-
int16_t の _t は何?
-
Notepad++の関数リスト表示の変...
-
コンソールアプリを作成するの...
-
逆コンパイルと逆アセンブルの...
-
MACで動く実行ファイルをWindow...
おすすめ情報