The SD Source Code Search Engine (SCSE) can probably answer this for many langauges. SCSE breaks each file apart into lexemes according to its (programming) language lexical syntax (identifiers, literal numbers, keywords, operators, string literals, comments), indexes the file tokens based on the lexical classification. Line breaks/whitespace are ignored. After indexing, you can do searches across a very large source base very quickly, see the set of potential hits, and single-click to view any particular one.
To do the search suggested, the following SCSE command will do:
I=foo '(' ... N=0
which means an identifer ("I") named "foo" (whether macro or function call) followed by operator '(' within several tokens ("...") of a number ("N") token with value "0". (You can control what "several tokens" means; the default is 5.).
This will find calls to foo with whitespace/linebreaks and comments between it an the literal 0. Yes, it will find some false positives too, but in practice not very many.
Setting up SCSE merely requires you to make lists of interesting files according to language category ("ls -r *.ext" does most of of this), and then run the indexer.
SCSE can be obtained with C, C#, C++, COBOL, Java, JavaScript, PHP, XML, and many other language lexeme extractors.