CDT
はx86_64-w64-mingw32-as
のような対応するバックエンドツールを使用して、C/C++ Build > Settings > Tool Settings > GCC Assembler
に設定されているeclipseでデフォルトでアセンブリファイルをコンパイルすることがわかりました。 Options Controlling the Kind of Outputもののアセンブリファイル内のプリプロセッサはgccではありませんか?
################################################################################
# Automatically-generated file. Do not edit!
################################################################################
# Each subdirectory must supply rules for building sources it contributes
src/%.o: ../src/%.c
@echo 'Building file: $<'
@echo 'Invoking: Cygwin C Compiler'
x86_64-w64-mingw32-gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "[email protected]" "$<"
@echo 'Finished building: $<'
@echo ' '
src/%.o: ../src/%.cpp
@echo 'Building file: $<'
@echo 'Invoking: Cygwin C++ Compiler'
x86_64-w64-mingw32-g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "[email protected]" "$<"
@echo 'Finished building: $<'
@echo ' '
src/%.o: ../src/%.S
@echo 'Building file: $<'
@echo 'Invoking: GCC Assembler'
x86_64-w64-mingw32-as -o "[email protected]" "$<"
@echo 'Finished building: $<'
@echo ' '
はアセンブラコードfile.s
を言います。
file.S file.sx事前処理が必要なアセンブラコード。
私はここにいると思いますpreprocessed
cプリプロセッサを参照します。しかし、それはgcc file.S
いうよりas file.S
(大文字の「S」)である必要があり、後者は、ファイルがCプリプロセッサが含まれていError: junk at end of line, first unrecognized character is
( ' `のようなエラーを促すメッセージが表示されます、次の例(.S)を取る:。
#ifdef __x86_64__
#if defined(SYMBOL_UNDERSCORE)
#define GLOBL_SYMBOL(x) _##x
#else
#define GLOBL_SYMBOL(x) x
/* #error "============" */
#endif
.globl GLOBL_SYMBOL(foo)
#endif
動作します(.S)==
はこのように、それは、この考え方によると ?右、プリプロセッサ(GCCの作業手順の1つのステップ)に責任があるのgccで以下の...
/* https://sourceforge.net/p/predef/wiki/Architectures */
/* #ifdef __LP64__ || _LP64 */
#if defined(__i386__) || defined(_M_IX86)
# include "nomakefile/foo_x86.S"
#elif defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64)
# include "nomakefile/foo_x64.S"
#else
# error Unsupported architecture
#endif
Asl O
- How do I enable the preprocessor in gcc assembly
- How to access C preprocessor constants in assembly?
自己回答Q&Aを作成しようとしていた場合は、質問が多すぎる回答を含まない適切な質問であることを確認してください。他の人からの複数の答えが可能であるべきです。 –
私自身の質問に答えるのは面白いので、試しても試してみることはできません。結果として、 '-1'とマークされています。はい、それは役に立たず、私は間違っていたことを知っています〜 – samm
あなたの答えは間違っているとは関係ありません。要点は、あなたが質問に入れたテキストの多くが答えにあったはずだったということでした。仮説を持つ巨大な質問は、はい/いいえの答えしか持っていません。 "gccは何を実行するかを決定する"のような小さな質問は本当の答えを持つことができます。 –