ここから本文です

C++で、intと書くと64ビット整数となるようなマクロを作ることは可能でしょうか?

tos********さん

2019/6/2303:43:00

C++で、intと書くと64ビット整数となるようなマクロを作ることは可能でしょうか?

閲覧数:
56
回答数:
4

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

n2q********さん

2019/6/2310:52:14

まず、次のようにマクロを作ります。


/*Visual C++の場合*/
#define int __int64

/*一般の場合(要 #include <cstdint>)*/
#define int int64_t


「intと書くと64ビット整数となる」を適用したいソースファイルを #include します。(xxx.c は内容を改変出来ないものとします。)

#include "xxx.c"


安全のため #undef します。
#undef int


この後は int が元通りになっているので、それを前提としたコードを書きます。


《参考》

基本的に ikt********さんと同意見ですが、long long や int64_t では済まない場合のご質問であると仮定してみました。

質問した人からのコメント

2019/6/23 18:08:05

回答ありがとうございました。マクロでできるのですね!やってみます。

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

har********さん

2019/6/2313:58:52

Visual Studio 2017 でも int64_t は使えます。
<iostream> をインクルードすれば <cstdint> も連れられてインクルードされます。
私的には __int64 というコンパイラメーカー特有の名前は使いたくありません。
---
#define int __int64 または
#define int int64_t
のマクロを使った場合

int main() { ... } は
__int64 main() { ... } または
int64_t main() { ... }
に置換されます。
int と __int64, int64_t はたとえ同じサイズであっても違う型なのでコンパイルエラーになります。

int を他の型に置き換えるのはバグ、トラブルの元になるので止めた方がいいと思います。
---
int でなく Int と他の名前を使用して
#define Int int64_t

typedef int64_t Int;
でできます。マクロは型チェックが抜けるのでお勧めしません。

素直に int64_t を使う方がいいと思います。

プロフィール画像

カテゴリマスター

ikt********さん

2019/6/2310:04:27

お求め回答じゃないです、ごめんなさい。

素直に <ctsdint> の int64_t を使ったほうがよいのでは。
https://ja.cppreference.com/w/cpp/header/cstdint

合法かつ安全かつポータブル。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

プロフィール画像

カテゴリマスター

yah********さん

2019/6/2309:56:33

#DEFINE int longlong

で通らないかな。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる