C のプリプロセッサでは文字列が扱えない

以下のコードはコンパイルが通らない。

#include <stdio.h> 
#define ABC "abc" 
//#define ABC 1 
 
int main(int argc, char *argv[]) { 
#if ABC==ABC 
    printf("ok\n"); 
#endif 
    return 0;  
} 

コンパイルエラーのメッセージは以下のような感じだ。

ppt_test.c:6:5: error: token ""abc"" is not valid in preprocessor expressions

よく考えたら、プリプロセッサで文字列を比較しようとした場合、割と壮大な処理(strcmp 相当)が必要なので、出来るはずがないということか。